我需要防止視圖在特定情況下呈現,但我無法理解如何防止呈現它。在cakephp中呈現空白視圖
我試圖
$this->autoRender=false
,但什麼都沒有發生,可能是因爲我使用的管理從常規控制器呈現不同的API引擎。任何人都知道這樣做的任何伎倆?
我需要防止視圖在特定情況下呈現,但我無法理解如何防止呈現它。在cakephp中呈現空白視圖
我試圖
$this->autoRender=false
,但什麼都沒有發生,可能是因爲我使用的管理從常規控制器呈現不同的API引擎。任何人都知道這樣做的任何伎倆?
無需瞭解API引擎任何你正在使用,也許嘗試使空佈局空的內容並把它在控制器$this->layout = 'empty_layout'
嘗試使用AJAX佈局$this->layout = 'ajax'
這是默認空的佈局,這是用於ajax方法。
在尋找解決方案時,我找到了答案。現在使用CakePHP 2.4.x的時候,你可以在你的控制器使用下面的代碼:
$this->layout = false;
這將會導致剛剛視圖渲染,沒有一個佈局。
使用$this->layout = 'ajax'
似乎並不足夠。
但使用這些兩行的工作:
$this->layout = 'ajax';
$this->render(false);
這是一個老問題。目前的cake-version是3.x,並且有一個使用空白布局的簡單方法。從對方的回答
$this->viewBuilder()->autoLayout(false);
CakePHP的3 autoLayout(false)
方法仍然有系統嘗試找到您所呼叫的動作相應的視圖/模板文件:
只有添加的控制器。由於我根本不需要輸出,所以這對我不起作用,所以我還需要渲染一個空模板。
創建一個空白.ctp
文件可能需要每一個空的動作是不是一種選擇是,因爲你通常希望有一個和重用。 CakePHP 2有一個$this->viewPath
屬性,它可以讓你配置控制器查看app/View
文件夾,但它的CakePHP 3替代版本仍然會查看相應的控制器和前綴文件夾。有一種不太明顯的方式來強制CakePHP3在根視圖路徑中查找模板。
src/Template/my_blank_view.ctp
以下內容添加到您的控制器動作:
$this->viewBuilder()->layout(false);
$this->viewBuilder()->templatePath('.'); // this
$this->viewBuilder()->template('my_blank_view');
而且,我使用$this->viewBuilder()->layout(false)
代替autoLayout(false)
因爲後一種暗示,有可能是稍後再設置一個佈局,其中layout(false)
只是明確指定不需要佈局。
public function function_without_layout(){
$this->viewBuilder()->autoLayout(false);
echo "hello Brij";
exit;
}
$this->layout = false;
已在CakePHP版本3中棄用。
使用$this->viewBuilder()->autoLayout(false);
的CakePHP的版本3.
在控制器中添加此:
$this->autoRender = false;
這工作在我的項目。
仍嘗試搜索視圖文件並顯示我錯誤:未找到ExampleController :: myAction()的視圖 – 2016-12-24 11:12:14