我正在使用 ezplatform 并试图弄清楚如何自动将公共 cms 内容共享到所有页面,而无需为每个视图编写单独的控制器。
这是 yml 文件的简单摘录:
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"
除了最后一个之外,这是与自己的自定义控制器的三个简单匹配项。
前两场比赛击中了一个控制器,该控制器扩展了一个基本控制器。在基本控制器中,我们有一个标准的渲染函数,它的调用方式如下:
return $this->render(
'full/article_container.html.twig',
[
'location' => $location,
'content' => $currentContent,
'articles' => $articles,
'articleLocations' => $locations,
]
);
所述渲染函数如下所示:
$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
页面时,由于它没有使用自定义控制器,因此它不会加载页眉和页脚所需的公共数据,这会导致 twig 错误。
问题: 我们如何在不为每种数据类型编写自定义控制器的情况下向所有路由提供通用内容?