【ECCUBE】独自のページを追加する

とろ

ECCUBE3,4にて、
管理画面のページ追加機能を使用せずにControllerを介して独自のページを追加する方法のメモ

独自のControllerを作成

/app/Customize/Controller/以下に独自のControllerクラスファイルを作成する

  • /app/Customize/Controller/PageController
<?php

namespace Customize\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Response;

class PageController
{
    //
}

このクラスの中に、@Route アノテーションを付与した関数を追加していくことで
ルーティングが自由に追加できる

@Routeアノテーションさえ付いていればController名や関数名はなんでもOK

例えば「ようこそ!」というレスポンスだけを返してみる場合はこんな感じ

/**
 * @Route("/welcome")
 */
 public function welcome()
 {
    return new Response('ようこそ!');
 }

これで /welcomeにアクセスすると文字だけが表示されるようになる

twigテンプレートで表示したい場合

@Route アノテーションに加えて、@Templateアノテーションを追加する

 /**
   * @Route("/about", name="about")
   * @Template("Page/about.twig")
   */
  public function about()
  {
      return [];
  }

合わせて、/app/template/テーマ名/{@Templateで指定したパス}以下に
twigファイルを新規作成する
例えば上記例だと下記のtwigを作成することになる

  • app/template/default/Page/about.twig
<h3>About</h3>
...

この場合従来のControllerと同様にDBの取得・操作なども併せて行えるので便利

URLでパラメータを受け取る場合

@Route アノテーションと引数に追加してあげる

  /**
    * @Route("/page/{id}")
    */
    public function page($id)
    {
        return new Response('pageId is '.$id);
    }

その他オプションやできることはSymfonyドキュメントに記載あり

\ 案件のご依頼・ご相談はこちらから /