前提・実現したいこと
EC-CUBE2で構築していたECサイトをEC-CUBE4に移行します。
EC-CUBE2でuser_data/test1.phpで実現していたページをEC-CUBE4でuser_data/test1で表示したいです。
ただし、既存test1.phpではDBアクセス等あり単純なページ表示というわけではありません。
src/Eccube/Controller/UserDataController.phpをapp/Customize/Controller/UserDataControllerにコピーしてtest1用のメソッドを追加しました。(将来的にはここにDBアクセスを呼んだりする予定です。)
user_data/test1にアクセスするとデフォルトのヘッダ部分やフッタ部分が表示されません。
ちなみにuser_data/test3という新規ページを作成しアクセスするとデフォルトのヘッダ部分やフッタ部分が表示されます。
user_data/test1にアクセスしてデフォルトのヘッダ部分やフッタ部分が表示できるようにするためにはどのような処理を追加すると良いのでしょうか?
発生している問題・エラーメッセージ
上記記述のとおりuser_data/test1にアクセスしてデフォルトのヘッダ部分、フッタ部分が表示されないのが問題です。
■user_data/test1
■user_data/test3
※デフォルトのヘッダ部分とは上図の「ECショップ」とか「新入荷」とかの部分です。
※デフォルトのフッタ部分とは上図の「当サイト」とか「EC4ショップ」とかの部分です。
該当のソースコード
■app/Customize/Controller/UserDataController
php
1class UserDataController extends AbstractController 2{ 3 : 4 : 5 /** 6 * @Route("/%eccube_user_data_route%/{route}", name="user_data_test1", requirements={"route": "test1(?<!/)"}) 7 */ 8 public function test1(Request $request, $route) 9 { 10 $Page = $this->pageRepository->findOneBy( 11 [ 12 'url' => $route, 13 'edit_type' => Page::EDIT_TYPE_USER, 14 ] 15 ); 16 17 if (null === $Page) { 18 throw new NotFoundHttpException(); 19 } 20 21 $file = sprintf('@user_data/%s.twig', $Page->getFileName()); 22 23 $event = new EventArgs( 24 [ 25 'Page' => $Page, 26 'file' => $file, 27 ], 28 $request 29 ); 30 $this->eventDispatcher->dispatch(EccubeEvents::FRONT_USER_DATA_INDEX_INITIALIZE, $event); 31 32 log_error('デバッグ:test1-file',[var_export($file,true)]); 33 return $this->render($file); 34 } 35 36 /** 37 * @Route("/%eccube_user_data_route%/{route}", name="user_data", requirements={"route": "([0-9a-zA-Z_\-]+/?)+(?<!/)"}) 38 */ 39 public function index(Request $request, $route) 40 { 41 $Page = $this->pageRepository->findOneBy( 42 [ 43 'url' => $route, 44 'edit_type' => Page::EDIT_TYPE_USER, 45 ] 46 ); 47 48 if (null === $Page) { 49 throw new NotFoundHttpException(); 50 } 51 52 $file = sprintf('@user_data/%s.twig', $Page->getFileName()); 53 54 $event = new EventArgs( 55 [ 56 'Page' => $Page, 57 'file' => $file, 58 ], 59 $request 60 ); 61 $this->eventDispatcher->dispatch(EccubeEvents::FRONT_USER_DATA_INDEX_INITIALIZE, $event); 62 63 log_error('デバッグ:index-file',[$file]); 64 return $this->render($file); 65 } 66} 67
※src/Eccube/Controller/UserDataController.phpをコピーしてfunction test1()を追加しています。
※/user_data/test1はfunction test1()を通過し、/user_data/test3はfunction index()を通過しています。
■app/template/user_data/test1.twig
twig
1{% extends 'default_frame.twig' %} 2 3{% block main %} 4テスト 5 6 7{% endblock %}
■app/template/user_data/test3.twig
twig
1{% extends 'default_frame.twig' %} 2 3{% block main %} 4テスト3 5 6 7{% endblock %}
sql
1MariaDB [eccube4]> select id,page_name,url,file_name,edit_type from dtb_page where id between 46 and 47; 2+----+--------------+-------+-----------+-----------+ 3| id | page_name | url | file_name | edit_type | 4+----+--------------+-------+-----------+-----------+ 5| 46 | テスト1 | test1 | test1 | 0 | 6| 47 | テスト3 | test3 | test3 | 0 | 7+----+--------------+-------+-----------+-----------+ 82 rows in set (0.000 sec) 9 10MariaDB [eccube4]> select page_id,layout_id from dtb_page_layout where page_id between 46 and 47; 11+---------+-----------+ 12| page_id | layout_id | 13+---------+-----------+ 14| 46 | 2 | 15| 47 | 2 | 16+---------+-----------+ 172 rows in set (0.000 sec) 18 19MariaDB [eccube4]>
試したこと
app/Customize/Controller/UserDataControllerのtest1()を削除して/user_data/test1をapp/Customize/Controller/UserDataControllerのindex()を通過させるとデフォルトのヘッダ部分、フッタ部分が表示されます。
このことよりDB設定、twigには落ち度はないのかなぁと思っています。
補足情報(FW/ツールのバージョンなど)
PHP 7.1
EC-CUBE 4.0
MariaDB 10.3

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。