EC-CUBE3系 プラグイン作成 ステップ3 再掲載


symfonyの仕組みを先に理解したいところですが、

実践も並行してってことで、EC-CUBEのプラグインのほう行ってみます。

管理画面のカラーバリエーションのファイルコピーと 配色切り替えのための設定画面の作成をやってみます。

ファイルコピーですが

PluginManager.php

のInstallイベントと削除をUninstallイベントで行います

 

dir_copy($pluginDir,$cssDir);
	}
	/**
	* アンインストール時
	*/
	public function uninstall($config, $app)
	{
		$this->dir_delete($app['config']['template_admin_html_realdir'].'/assets/css/cssVar');
	}
	/**
	* 有効時
	*/
	public function enable($config, $app)
	{
	}
	/**
	* 無効時
	*/
	public function disable($config, $app)
	{
	}
	/**
	* アップデート時
	*/
	public function update($config, $app)
	{
	}
	
	/** -------------------------------------
	* 関数名 dir_copy
	*
	* @param $dir_name
	* @param  $new_dir
	*
	* @return 
	*
	-----------------------------------------*/
	function dir_copy($dir_name, $new_dir)
	{
		if (!is_dir($new_dir)) {
			mkdir($new_dir);
		}
		
		if (is_dir($dir_name)) {
			if ($dh = opendir($dir_name)) {
				while (($file = readdir($dh)) !== false) {
					if ($file == "." || $file == "..") {
						continue;
					}
					if (is_dir($dir_name . "/" . $file)) {
						$this->dir_copy($dir_name . "/" . $file, $new_dir . "/" . $file);
					}
					else {
						copy($dir_name . "/" . $file, $new_dir . "/" . $file);
					}
				}
				closedir($dh);
			}
		}
		return true;
	}
	
	/** --------------------------------------
	* 関数名 dir_delete
	*
	* @param $dir
	*
	* @return 
	*
	------------------------------------------*/
	
	function dir_delete($dir){
		if (is_dir($dir) and !is_link($dir)) {
			$paths = array();
			while ($glob = glob($dir)) {
				$paths = array_merge($glob, $paths);
				$dir .= '/*';
			}
			array_map('unlink', array_filter($paths, 'is_file'));
			array_map('rmdir',  array_filter($paths, 'is_dir'));
		}
	}
}

問題の新規ページの作成。

EC-CUBE3 プラグインマニュアルをによると

まず

config.yml

にサービスプロバイダを定義します

 

name: 管理画面カラーバリエーション
code: AdminColorVariation
version: 1.0.0
event: AdminColorVariationEvent
service:
 - AdminColorVariationChange

これにあわせて

ServiceProvider\AdminColorVariationChange.php

を作成

なかみは

match('/AdminColorVariationChange',
		'\Plugin\AdminColorVariation\Controller\AdminColorVariationController::AdminColorVariationChange')
		->bind('AdminColorVariationChange');
	}
	
	public function boot(BaseApplication $app)
	{
		
	}
}

 

さらに、コントローラーを定義します

Controller\AdminColorVariationController.php

 

これは、サービスプロバイダ

 

        $app->match(‘/AdminColorVariationChange’,
‘\Plugin\AdminColorVariation\Controller\AdminColorVariationController::AdminColorVariationChange‘)
->bind(‘AdminColorVariationChange’);

の定義と合わせます

 

namespace Plugin\AdminColorVariation\Controller;
use Eccube\Application;
class AdminColorVariationController
{
	public function AdminColorVariationChange(Application $app)
	{
		return "Hello, World!!!";
	}
}

これで

ホスト/html/AdminColorVariationChange

でアクセスすると Hollo, World と表示されます。

簡単なようですけど、ここまでに5-6時間はかかってるんです。

どことどこがつながってるのか、名前をどう合わせるのか??

情報少なすぎです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です