2013-01-14 43 views
0

我正在使用ZF 2.0.6,我知道下面的技巧來禁用視圖,但會使其他全局視圖/佈局保持不變。我也知道有一個setContent方法可以將所有不符合我需要的東西都打開。 那麼如何從控制器中禁用全局視圖/佈局對象呢?如何從zf2中的控制器中禁用全局視圖/佈局對象?

禁用視圖僅

$viewModel = new ViewModel(array()); 
$viewModel->setTerminal(true); 
return $viewModel; 

亂碼響應

return $this->getResponse()->setContent('Nooooooooo!'); 

似乎有一個問題設置在模塊引導和調度事件的佈局時。

+0

在哪裏的問題? – Sam

+0

抱歉,山姆認爲這很明顯 - 題目是問題 - 但我會將它添加到內容塊中)>) – ezraspectre

+0

只是沒有得到它,我猜;)你究竟想要達到什麼目的?一般來說,您可能會採取不同的方法來處理您目前正在嘗試執行的操作。例如:如果您需要一個僅顯示數據的控制器,您可能會發現RestFulController或JsonModel有趣? – Sam

回答

0

我決定採用clobber方法並傳遞一個新的視圖模型。這似乎工作,但必須有一個更優雅的方法。

控制器

use Zend\View\Model\ViewModel; 
use Module\Form\Form; 

.... 

public function createAction() 
{ 
    $viewRenderer = $this->getServiceLocator()->get('viewrenderer'); 
    $viewModel = new ViewModel(); 
    $viewModel->setTemplate('module/controller/action') 
       ->setVariables(array('form' => new Form())); 
    return $this->getResponse() 
       ->setContent($viewRenderer->render($viewModel)); 
} 
+0

如果在模塊級別對視圖模型執行任何操作,則需要使用此方法,否則只需使用'setTerminal()'方法。 – ezraspectre

+0

任何與視圖模型的東西我的意思是基於路線或其他東西切換佈局|視圖。 – ezraspectre