私はezplatformを使用しており、ビューごとに別々のコントローラを作成せずに共通のCMSコンテンツをすべてのページに自動的に共有する方法を見つけようとしています。共有symfonyベースコントローラからのすべてのビューの共通コンテンツ
root_folder:
controller: "AppBundle:Homepage:homepage"
match:
Id\Location: 58
article_container:
controller: "AppBundle:ArticleContainer:articleContainerChildren"
match:
Identifier\ContentType: "article_container"
article_one_column:
template: "full/article_one_column.html.twig"
match:
Identifier\ContentType: "article_one_column"
これらは、最後の例外を除いて、そこに独自のカスタムコントローラに3つの簡単な試合です:
これはYMLファイルから簡単な抽出物です。
最初の2つの試合は、ベースコントローラを拡張するコントローラに当たった。
return $this->render(
'full/article_container.html.twig',
[
'location' => $location,
'content' => $currentContent,
'articles' => $articles,
'articleLocations' => $locations,
]
);
ザ・関数は次のようになり、レンダリング言った:ベースコントローラ内 は、我々は標準はこのように呼ばれる関数をレンダリングする必要がありますが、我々は単純にして、元のparamsをマージ見ることができるように
$parameters = array_merge($parameters, [
'main_navi' => $navigation,
'mega_navi_data' => $navigation,
'quotes' => $contentRenderer->getQuotesData(),
'featured_articles' => $contentRenderer->getFeaturedArticles(),
'contact_form' => $this->getContactForm(),
]);
return parent::render($view, $parameters, $response);
すべてのページに必要な共通データこのデータは「maga navi」とフッターのコンテンツに使用されます。
問題は、我々はarticle_one_column
ページをロードしようとすると、このよう はそれがゆえ、共通のデータをロードしないカスタムコントローラ 小枝エラーになり、ヘッダーとフッターに必要なを使用していないことになりました。
質問: データ型ごとにカスタムコントローラを作成せずに共通のコンテンツをすべてのルートに配信するにはどうすればよいですか?
これを知っている人には注意してください。カスタムコントローラーを使用しようとしている場合に、このプリレンダーイベントを使用したい場合(素晴らしい)です。カスタムコントローラー(単にstdレンダーを呼び出す場合)はこのイベントを自動的にトリガーしないので、手動で呼び出す必要があることに注意してください。 ezの中心からのStdビューレンダリングはイベントをトリガーします...コントローラから単純なレンダリングを行うときにすべてのstdイベントをトリガーするための簡単なメソッドがあれば、すばらしいでしょう... – John