CakePHP - визуализировать представление, которое фактически является видом плагина из компонента - PullRequest
3 голосов
/ 29 ноября 2011

Доброе утро, ребята,

Так что я впервые разрабатываю плагин для 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?

Плюс, считается ли это хорошей практикой для принятия функции рендеринга контроллера таким образом?

Ответы [ 3 ]

2 голосов
/ 02 декабря 2011

Одним из способов является вызов URL-адреса контроллера / действия PLUGIN в вызове AJAX вместо основного URL-адреса контроллера / действия приложения.

например: вместо:

http://domain.com/controller/action

Вы звоните:

http://domain.com/my_plugin/controller/action


Когда вы делаете это таким образом, представления и макеты плагинов вызываются автоматически. Смотри:

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 голос
/ 06 октября 2013

Возможно, вы захотите установить $ this-> view для файла плагинов с точечным представлением, который вы хотите визуализировать.

0 голосов

добавить к источнику

$controller->plugin = "pluginname";
...