Symfony 在控制器中设置细枝布局
我有多个子域名,每个都有自己的布局。有些控制器是跨子域共享的(例如登录),有些则不是。我想做的是根据域设置布局,这样我就不需要在每个模板中编写:Symfony 在控制器中设置细枝布局,symfony,twig,Symfony,Twig,我有多个子域名,每个都有自己的布局。有些控制器是跨子域共享的(例如登录),有些则不是。我想做的是根据域设置布局,这样我就不需要在每个模板中编写: {% if app.request.domain == 'one' %} {% set layout = '::layout-one.html.twig' %} {% elseif app.request.domain == 'two' %} {% set layout = '::layout-two.html.twig' %} ... {%
{% 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 %}
{% extends layout %}
是否可以在控制器(或其他地方)中设置默认布局?例如:
如果每个域都有单独的配置文件,则可以将布局配置放在其中,并将其作为全局变量在twig中提供: config_one.yml
twig:
globals:
base_layout: '::layout-one.html.twig'
然后在细枝上你可以做:
{% extends base_layout %}
如果每个域都有单独的配置文件,则可以将布局配置放在其中,并将其作为全局变量在twig中提供: config_one.yml
twig:
globals:
base_layout: '::layout-one.html.twig'
然后在细枝上你可以做:
{% extends base_layout %}
您可以在
FooController
中设置layout
变量:
class FooController
{
function fooAction()
{
...
return $this->render($template, array(
'layout' => $layout
));
}
}
然后在模板中使用它:
{% 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 %}
{% extends layout %}
您可以在
FooController
中设置layout
变量:
class FooController
{
function fooAction()
{
...
return $this->render($template, array(
'layout' => $layout
));
}
}
然后在模板中使用它:
{% 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 %}
{% extends layout %}