我有多个子域,每个子域都有自己的布局。有些控制器是跨子域共享的(例如登录),有些则不是。我想做的是根据域设置布局,这样我就不需要在每个模板中编写:
{% if app.request.domain == 'one' %}
{% set layout = '::layout-one.html.twig' %}
{% elseif app.request.domain == 'two' %}
{% set layout = '::layout-two.html.twig' %}
...
{% endif %}
{% extends layout %}
是否可以在控制器(或某处)设置默认布局? E.g:
class FooController
{
function fooAction()
{
...
$templating = $this->get('templating');
$templating->setLayout($layout);
return $templating->renderResponse($view, $parameters, $response);
}
}
答案 0 :(得分:3)
如果每个域都有一个单独的配置文件,您可以将布局配置放在那里,并将其作为全局变量在twig中使用:
<强> config_one.yml 强>
twig:
globals:
base_layout: '::layout-one.html.twig'
然后在树枝上你可以做:
{% extends base_layout %}
答案 1 :(得分:1)
您可以在layout
:
FooController
变量
class FooController
{
function fooAction()
{
...
return $this->render($template, array(
'layout' => $layout
));
}
}
然后在模板中使用它:
{% extends layout %}