簡體   English   中英

Zend 重用視圖

[英]Zend reuse views

對於每個新的 controller 和我創建的操作,Zend 都希望在/views/scripts/controllername中有一個模板文件。 但是,我希望多個操作共享一個模板,可以將數據庫中的文本注入到該模板中。

我目前使用布局並通過echo $this->layout()->content委托頁面特定視圖。 我嘗試了以下方法:

class SomeController extends Zend_Controller_Action{

    public function someAction() {
        $path = $this->view->getScriptPath();
        $this->view = new Zend_View();
        $this->view->setScriptPath($path);
        $this->view->render('default.phtml');
    }
}

但是,我收到一個錯誤,即在路徑中找不到腳本“some/some.phtml”。 我該如何正確地做到這一點?

您必須使用“默認”(不帶擴展名)並直接調用該方法(不在視圖上),例如

$this->render('default');

Zend_Controller_Action::render

渲染(字符串|空 $action = null,字符串|空 $name = null,布爾 $noController = false):無效

渲染視圖

渲染視圖。 默認情況下,視圖在視圖腳本路徑中作為 /.phtml 找到。 您可以通過重置 {@link $viewSuffix} 來更改腳本后綴。 您可以通過為 $noController 指定 boolean true 來省略 controller 目錄前綴。

默認情況下,呈現的內容會附加到響應中。 您可以通過指定 $name 來指定要設置的命名正文內容段。


如果要提供特定腳本,請使用

$this->renderScript('controller/action.phtml');

Zend_Controller_Action::renderScript

渲染腳本(字符串 $script,字符串 $name = null):無效

渲染給定的視圖腳本

與 {@link render()} 類似,此方法渲染視圖腳本。 然而,與 render() 不同的是,它不會通過 {@link getViewScript()} 自動確定視圖腳本,而是渲染傳遞給它的腳本。 如果您知道要使用的確切視圖腳本名稱和路徑,或者使用不符合 getViewScript() 定義的規范的路徑,請使用此選項。

默認情況下,呈現的內容會附加到響應中。 您可以通過指定 $name 來指定要設置的命名正文內容段。

如果您選擇使用viewRenderer並且需要從另一個 controller 中選擇視圖,則必須將 $noController 參數設置為 TRUE:

圖書控制器:

public function saveBookAction()
{ 
    ...
    $this->_helper->viewRenderer('/approval/index', null, $noController = true);
}

這將尋找視圖/views/scripts/approval/index.phtml而不是默認的/views/scripts/book/save-book.phtml

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM