[英]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.