EC-CUBE3のページは一般的にコントローラとテンプレートが対となっています。
管理画面で新規画面を作成するには、コントローラとテンプレートを作成し、URLとコントローラの紐付け(ルーティング)を指定する必要があります。
コントローラの最後では$app->render()メソッドにより、どのテンプレートファイルを使用するかを決定してブラウザへ表示します。

(例)商品登録ページ
URL: /admin/product/product/new
既存コントローラ: src/Eccube/Controller/Admin/Product/ProductController.php
既存テンプレート: src/Eccube/Controller/Admin/Product/ProductController.php または app/template/Admin/Product/product.twig

今回は/admin/new_menu/new_page.phpというURLで管理画面に新規画面を追加してみます。
URL: /admin/new_menu/new_page.php
新規コントローラ: src/Eccube/Controller/Admin/NewMenu/NewPageController.php
新規テンプレート: app/template/Admin/NewMenu/new_page.twig

1. ルーティングの指定

src/Eccube/ControllerProvider/AdminControllerProvider.php

既存のAdminControllerProviderへ次のコードを追加し、URLへアクセスがあった場合にどのコントローラを使用するか指定します。

$c->match('/new_menu/new_page', '\Eccube\Controller\Admin\NewMenu\NewPageController::index')->bind('admin_new_menu_new_page');

2. コントローラの作成

src/Eccube/Controller/Admin/NewMenu/NewPageController.php
他のコントローラを参考に、コントローラを新規作成します。
テンプレートは3で作成する新規テンプレートをrenderするようにします。

3. テンプレートの作成

app/template/Admin/NewMenu/new_page.twig
他のテンプレートを参考に、コントローラを新規作成します。2で作成したコントローラから渡された変数が使用可能です。

4. メニューへ表示

src/Eccube/Resource/config/nav.yml.dist
nav.yml.distを編集して管理画面のサイドバーへ新規メニューを追加します。

- id: new_menu
  name: 新規親メニュー
  has_child: true
  icon: cb-users
  child:
      - id: new_menu_new_page
        name: 新規子メニュー
        url: admin_new_menu_new_page

以上の手順を踏めば管理画面で新規ページを追加しメニューへ表示することが可能です。
その後、ページ特有のロジックを組むのがまた大変ではありますが、挙動が似た既存のページを参考にプログラム作成してみてください。

日本発!ECオープンプラットフォーム「EC-CUBE」 EC-CUBEゴールドパートナー EC-CUBEは株式会社イーシーキューブの商標です

EC-CUBEカスタマイズに関するお問い合わせはこちら


    [重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。

    EC-CUBEバージョンアップ