2013-06-04 87 views

回答

5

您切換控制器中的佈局。所以當你在控制器中完成時,你可以這樣調用渲染。

return $this->render(array('layout' => 'someFancyLayout')); 

您應該也可以在您的控制器中執行此操作。我不確定,但你可能需要擴展控制器來使用這種方式。

$this->_render['layout'] = 'someFancyLayout'; 

請注意,您也可以設置自定義媒體處理程序。這是例如在請求GPX文件時使用的,在這種情況下,我不使用佈局。

Media::type('gpx', 'application/text', array(
    'view' => 'lithium\template\View', 
    'layout' => false, 
    'template' => false 
)); 

而且你還可以在renderer呼叫過濾器做到這一點:

Media::applyFilter('render', function ($self, $params, $chain) { 
    $params['options']['layout'] = 'default'; 
    if (someCondition == isMet) { 
     $params['options']['layout'] = 'anotherLayout'; 
    } 
    return $chain->next($self, $params, $chain); 
}); 
+0

不錯的一個,謝謝。 – Tom

+0

太遲了,但我想知道我該怎麼做?我製作了一個名爲'page.html.php'的佈局,並將其放在'layouts'目錄中。我按照您在Controller中從名爲'page'的方法指定的方式調用它。但我得到一個錯誤,說該模板沒有在'views \ controllerName'目錄中找到。我做對了嗎?不應該所有的佈局都在'layouts'文件夾中嗎? –