我的佈局顯示兩次似乎有問題。我想知道這是否是由我的前端控制器插件(參見下文)中的某些東西引起的,該插件僅將Zend Layout僅用於特定模塊,而不用於主應用程序。任何答案將不勝感激。由於佈局被渲染兩次
class My_Controller_Plugin_AdoptLayout extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$moduleName = $request->getModuleName();
if ($moduleName == 'some-module') {
if (!Zend_Layout::isEnabled()) {
$view = new Zend_View(array('encoding' => 'UTF-8'));
$view->addScriptPath(ROOT_DIR . '/modules/some-module/views/scripts/');
$view->doctype('XHTML1_STRICT');
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
Zend_Layout::startMvc();
$layout = Zend_Layout::getMvcInstance();
$layout->setLayout('default');
$layout->setLayoutPath(APPLICATION_PATH . '/modules/some-module/views/scripts/layouts/');
$layout->setView($view);
}
}
}
}
謝謝安和。我想知道它是否可能是_forward實際上,但我真的需要使用它,因爲我必須在動作之間傳遞表單值,似乎無法讓它與$ this - > _ helper-> redirector一起工作。 我不得不創建一個新的視圖對象,因爲主應用程序使用Zend_View/Smarty混合,我不想改變我所有的模板,因爲它們是純Zend_View。 – somekindofusernamegoeshere 2009-09-25 14:15:08
爲什麼你需要將表單數據傳遞給另一個動作?該行爲是否在同一個控制器中。如果是這樣,你不能調用$ this-> otherAction();或者使用動作鏈接,但這可能會呈現另一個視圖,除非您關閉任何一個動作的呈現 – andho 2009-09-25 14:24:09