Настройка магических маршрутов для плагинов в CakePHP 1.3? - PullRequest
0 голосов
/ 12 июня 2010

Я работаю над обновлением моего проекта с CakePHP 1.2 до 1.3.При этом создается впечатление, что «волшебная» маршрутизация для плагинов, при которой имя контроллера (например, «ForumsController»), совпадающее с именем плагина (например, «форумы»), больше не направляется автоматически в корень URL плагина (например: "www.example.com/forums", указывающий на плагин "форумы", контроллер "форумы", действие "индекс").

Появляется следующее сообщение об ошибке:

Error: ForumsController could not be found.

Error: Create the class ForumsController below in file: app/controllers/forums_controller.php

<?php
class ForumsController extends AppController {
    var $name = 'Forums';
}
?>

На самом деле, даже если я перехожу к «www.example.com/forums/forums» или «www.example.com/forums/forums/index», я получаю точно такую ​​же ошибку.

Должен ли янужно явно настроить маршруты для каждого плагина, который я использую?Это, кажется, разрушает много волшебства, которое мне нравится в CakePHP.Я только обнаружил, что выполнение следующих работ:

Router::connect('/forums/:action/*', array('plugin' => 'forums', 'controller' => 'forums'));
Router::connect('/forums', array('plugin' => 'forums', 'controller' => 'forums', 'action' => 'index'));

Настройка 2 маршрутов для каждого отдельного плагина кажется излишним, не так ли?Есть ли лучшее решение, которое охватит все мои плагины или хотя бы сократит количество маршрутов, которые мне нужно настроить для каждого плагина?

Ответы [ 2 ]

1 голос
/ 15 июня 2010

Полагаю, эта тема Настройка и загрузка приложений охватывает это:

App::build(array(
    'plugins' => array('/full/path/to/plugins/', '/next/full/path/to/plugins/')
));

Также взгляните на этот билет: http://cakephp.lighthouseapp.com/projects/42648/tickets/750-plugin-route-problem-when-acl-and-auth-components-used#ticket-750-5 (торт 1.3удалил магические маршруты плагинов).

0 голосов
/ 13 июня 2010

В вашем каталоге / app / plugins / myplugin нет myplugin_app_controller.php.

Просто создайте файл, содержащий следующее:

<?php
class MypluginAppController extends AppController {

}
?>

И у вас будут все возможности вашего плагина. :)

...