Замените маршрут CakePHP из плагина на другой маршрут

Я использую плагин CakePHP для управления пользователями, который указывает маршрут для страницы с отказом в доступе.

Router::connect('/accessDenied', array('plugin' => 'usermgmt', 'controller' => 'users', 'action' => 'accessDenied'));

В моем основном приложении Cake я хотел бы «переопределить» этот маршрут, чтобы использовать свой собственный контроллер.

Я не хочу изменять плагин... так как это приведет к дальнейшему обслуживанию кода при обновлении плагина.

Есть ли способ заменить маршрут плагина на свой?


person Adam Erstelle    schedule 15.09.2013    source источник


Ответы (2)


Попробуйте Router::promote():

Router::promote()
Повысить маршрут (по умолчанию последний добавленный) в начало списка

Если я правильно понял ваш вопрос, вы хотели перезаписать только один маршрут. В app/Config/routes.php добавьте переопределенный маршрут и продвижение после CakePlugin::routes();.

//.... your routes....

//Here the plugin routes being loaded
CakePlugin::routes();

//Overwrite route:
Router::connect('/accessDenied', array('plugin' => 'usermgmt', 'controller' => 'users', 'action' => 'accessDenied'));
Router::promote(); //and promote it

Это должно делать свое дело. Продвижение не делает ничего, кроме перемещения последнего маршрута наверх. В CakePHP маршрутизация работает в порядке очереди (если вы внимательно проверьте источник, это массив), поэтому продвижение переместит ваш последний определенный маршрут наверх и, следовательно, перезапишет маршрут, определенный в плагине.

Изменить

Если вам не нравится продвижение, вы также можете определить маршрут до CakePlugin::routes(). Это тоже должно помочь.

person Lionel Chan    schedule 16.09.2013
comment
Информация в вашем редактировании помогла мне. Спасибо за помощь! - person Adam Erstelle; 16.09.2013

Просто не загружайте плагин маршрутами и используйте свои в app/Config/routes.php

CakePlugin::load('UserManagement', array('bootstrap' =>  true, 'routes' => false);
person floriank    schedule 15.09.2013
comment
Плагин загружает 52 маршрута, и, если возможно, я бы хотел избежать переопределения 51 из них, чтобы избежать 1. - person Adam Erstelle; 16.09.2013