質問 > その他 > 商品検索ブロックの動作について教えてください |
その他
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
468 |
投稿日時: 2019/6/21 16:15
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品検索ブロックの動作について教えてください 1)については、
/src/Eccube/Resource/template/default/block.twig を確認いただければ理由が理解いただけるのではないでしょうか? use_controllerカラムが1の時は、 {{ render(path('block_' ~ Block.file_name)) }} で、render()とpath()を利用してコントローラークラスを介した流れを実行しています。 その為、コントローラークラスの@Templateアノテーションで指定されたtwigを利用しているかと思います。 ※SearchProductControllerは@Template("Block/search_product.twig")を指定。 2)についても 先程と同じ /src/Eccube/Resource/template/default/block.twig を確認いただければ理由が理解いただけるのではないでしょうか? {{ render(path('block_' ~ Block.file_name)) }} でpathに指定されている文字列ですが、dtb_blockテーブルのfile_nameカラムの値を利用しています。 その為、以下のような文字列で処理されると思います。 path('block_serch_product') ここでいう引数の'block_serch_product'はルーティング名を指しています。 コントローラークラスの@Routeアノテーションでルーティング名を指定していますが、 全てのコントローラークラスの中から一致するメソッドを探して実行すべきコントローラーとメソッドを確定します。 今回の場合は、SearchProductController->index()の@Routeアノテーションに以下の記述がありますので、一致すると判定されます。 @Route("/block/search_product", name="block_search_product") ※name="***"の文字列で判断 3), 4)の回答ですが、 これらの挙動はSymfonyでの決まり事に合わせて、 ECCUBEが動作するように設計された仕組みになります。 コントローラークラスの@Routeアノテーションや@Templateアノテーション、 twig上のrender()やpath()はSymfonyの仕組みで、 dtb_blockテーブルやblock.twigの記述はECCUBE独自の仕組みとなります。 vendor/composer/autoload_classmap.php vendor/composer/autoload_static.php こちらのファイルはcomposerに関連するファイルファイルかと思いますので、 今回の挙動には、ほとんど関係ないものと思います。
|
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
商品検索ブロックの動作について教えてください | in_kyoto | 2019/6/18 22:07 |
» Re: 商品検索ブロックの動作について教えてください | 468 | 2019/6/21 16:15 |
Re: 商品検索ブロックの動作について教えてください | in_kyoto | 2019/6/22 0:59 |