Help us understand the problem. What is going on with this article?

EC-CUBE3のURLとファイルの関係(Providerの読み方)

More than 5 years have passed since last update.

まぁふつうにフレームワークとかさわり慣れてれば当たり前なんだろうけど

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');
poego
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした