2014-12-30 71 views
1

我有多個子域,每個都有自己的佈局。有些控制器在子域之間共享(例如登錄),有些則不是。我想要做的是根據域名設置佈局,這樣我就不需要在每個模板寫:在控制器中設置樹枝佈局

{% 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 %} 

是否有可能在控制器中設置默認佈局(或地方)?例如:

class FooController 
{ 
    function fooAction() 
    { 
     ... 
     $templating = $this->get('templating'); 
     $templating->setLayout($layout); 
     return $templating->renderResponse($view, $parameters, $response); 
    } 
} 

回答

1

您可以在FooController設置layout變量:

class FooController 
{ 
    function fooAction() 
    { 
     ... 
     return $this->render($template, array(
      'layout' => $layout 
     )); 
    } 
} 

,然後在模板中使用它:

{% extends layout %} 
3

如果你對每個域的一個單獨的配置文件,你可以把佈局配置在那裏,有它在樹枝可以作爲一個全局變量:

config_one.yml

twig: 
    globals: 
     base_layout: '::layout-one.html.twig' 

然後在樹枝你可以這樣做:

{% extends base_layout %}