早上好,
所以这是我第一次为CakePHP开发一个插件。这是我在组件startUp
中所做的事情。
//component
function startUp(&$controller){
//....
if($render){
$controller->render("return", "ajax");
}
}
默认渲染会查看app/views/<controllers>/return.ctp
和app/views/layouts/ajax
以进行此渲染调用。
无论如何,我是否可以指示从app/my_plugin/views/awesome_stuffs/return.ctp
和app/my_plugin/views/layout/ajax.ctp
进行渲染?
我相信param
的第三个Controller::render($file, $layout, $file)
可以完成这项任务,但是有没有更好的Cake做事方式?
另外,这被认为是接管控制器渲染功能的好习惯吗?
答案 0 :(得分:2)
一种方法是在AJAX调用中调用PLUGIN控制器/操作URL,而不是主app控制器/操作URL。
例如: 而不是:
http://domain.com/controller/action
你打电话给:
http://domain.com/my_plugin/controller/action
当你这样做时,插件视图和&amp;布局被自动调用。见:
http://book.cakephp.org/view/1118/Plugin-Tips
http://book.cakephp.org/view/1115/Plugin-Views
否则,我所知道的唯一方法是通过以下方式手动设置路径或控制器范围:
var $viewPath = 'path/to/plugin/views/';
var $layoutPath = 'path/to/plugin/layouts/';
答案 1 :(得分:1)
您可能想尝试将$ this-&gt; view设置为要渲染的插件虚线视图文件。
答案 2 :(得分:0)
添加到您的来源
$controller->plugin = "pluginname";