CakePHP - 从Component渲染实际上是插件视图的视图

时间:2011-11-29 04:16:03

标签: cakephp cakephp-1.3

早上好,

所以这是我第一次为CakePHP开发一个插件。这是我在组件startUp中所做的事情。

//component
function startUp(&$controller){
    //....
    if($render){
        $controller->render("return", "ajax");
    }
}

默认渲染会查看app/views/<controllers>/return.ctpapp/views/layouts/ajax以进行此渲染调用。

无论如何,我是否可以指示从app/my_plugin/views/awesome_stuffs/return.ctpapp/my_plugin/views/layout/ajax.ctp进行渲染?

我相信param的第三个Controller::render($file, $layout, $file)可以完成这项任务,但是有没有更好的Cake做事方式?

另外,这被认为是接管控制器渲染功能的好习惯吗?

3 个答案:

答案 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";