2012-02-21 96 views
0

我試圖在JSON對象中使用呈現的視圖,然後 將此返回給客戶端。我怎樣才能渲染一個真正不屬於特定動作的phtml文件?如何在JSON對象中使用呈現的Zend視圖

來自客戶端的請求操作沒有意見。然後它調用prepareForm()。在這個函數裏,我想渲染 form.phtml並將輸出傳遞給數組的'html'鍵。

private function prepareForm() 
    { 
     $json = Zend_Json::encode(array(
      'html' => $this->partial('form.phtml'), 
      'role' => $this->role, 
      'lang' => $this->lang 
     )); 

     echo $json; 
    } 

我該如何在Zend Framework中做到這一點?什麼是最好的方法來做到這一點?用你的行動

private function prepareForm() 
{ 
    $view = new Zend_View(); 
    $path = '/../'; // Replace with path to phtml 

    $view->addScriptPath($path); 

    $json = Zend_Json::encode(array(
     'html' => $view->render('form.phtml'), 
     'role' => $this->role, 
     'lang' => $this->lang 
    )); 

    echo $json; 
} 

回答

1

你需要一個Zend的視圖實例不是正確的做事方式。 MVC模式用於分離邏輯以查看。你可以只禁用的佈局和分配給您的視圖的JSON呈現如下:

$this->view->json = $json; 

,並在您的視圖:

<?= $this->json ?> 

如果您的請求來自一個Ajax腳本,你甚至可以品牌使用AjaxContext動作助手的東西更漂亮。這將允許您針對不同類型的請求使用一個動作,並根據請求類型(Ajax等)呈現正確的視圖。

0

您可以禁用佈局和視圖:

$this->_helper->layout()->disableLayout(); 
$this->_helper->viewRenderer->setNoRender(); 

對我來說,echo從控制器是

非常感謝

相關問題