まぁふつうにフレームワークとかさわり慣れてれば当たり前なんだろうけど
EC-CUBE2.13までは、アクセスしているURLと対応したディレクトリにかならずPHPファイルがあり、そこから見ていけば、どこを修正すればいいかが簡単に追うことができた。
EC-CUBE3では、今どきっぽく、ルーティングが採用されたので、アクセスしたURLだけではどこのファイルを触ればいいのか迷う。そんな時の探し方。
Providerをみる。
管理画面か、顧客画面(フロント)かで以下のどちらかを見ればよい
-
管理画面
- src\Eccube\ControllerProvider\AdminControllerProvider.php
-
フロント
- src\Eccube\ControllerProvider\FrontControllerProvider.php
Providerに書かれているものの読み方
Providerを見ると以下のような記述がある
// mypage
$controllers->match('/mypage/', '\\Eccube\\Controller\\MypageController::index')->bind('mypage');
$controllers->match('/mypage/login.php', '\\Eccube\\Controller\\MypageController::login')->bind('mypage_login');
$controllers->match('/mypage/change', '\\Eccube\\Controller\\Mypage\\ChangeController::index')->bind('mypage_change');
$controllers->match('/mypage/change_complete.php', '\\Eccube\\Page\\Mypage\\ChangeComplete')->bind('mypage_change_complete');
$controllers->match('/mypage/delivery.php', '\\Eccube\\Page\\Mypage\\Delivery')->bind('mypage_delivery');
以下は、http://ec-cubeのURL/mypage/ にアクセスした場合の内容が書かれている。
$controllers->match('/mypage/', '\\Eccube\\Controller\\MypageController::index')->bind('mypage');
以下は、http://ec-cubeのURL/mypage/change にアクセスした場合の内容が書かれている。
$controllers->match('/mypage/change', '\\Eccube\\Controller\\Mypage\\ChangeController::index')->bind('mypage_change');
それぞれ
$controllers->match('URLのパス', '呼び出されるコントローラークラス::呼びだされるメソッド')->bind('URL generatorなどで利用するショートカット表記');
のように理解してもらえばいい。
なので、URLからもぐっていきたい場合は、ここをみて呼び出されているコントローラークラスを確認して、開けば良い。上の例ならそれぞれ以下のファイルを見れば良いということになる。
- /mypage/
- src\Eccube\Controller\MypageController.php::index
- /mypage/change
- src\Eccube\Controller\Mypage\ChangeController.php::index
参考) 3系のソースに置き換えきっていないもの見分け方
以下はまだ2.13系のままでリファクタが終わっていないもの。(Controllerではなく、Pageになっているところに注目)
$controllers->match('/mypage/delivery.php', '\\Eccube\\Page\\Mypage\\Delivery')->bind('mypage_delivery');