Я использовал маршрутизацию с "slug" в качестве именованного параметра, например:
Router::connect('/category/:slug', array('controller'=>'categories', 'action'=>'view'), array('pass'=>array('slug'), 'slug'=>'[a-z0-9\-]+'));
Теперь я наткнулся на проблему, потому что я хочу ограничить вышеуказанный маршрут только для зарегистрированных пользователей, поэтому я поместил это в функцию beforeFilter () моего CategoriesController:
if(!$this->Auth->loggedIn()) {
$this->Auth->deny('view');
}
Теперь, если я перейду в / category / my-category (пока выйду из системы), я буду перенаправлен на страницу входа в мое приложение, к сожалению, после того, как я войду в систему, я буду перенаправлен в / category / view / my-category / slug : моя-категория
Это связано со строкой 317 AuthComponent.php, где мы имеем:
$this->Session->write('Auth.redirect', Router::reverse($request));
Похоже, что когда я выполняю Router :: reverse ($ request) на указанном выше маршруте, он не работает должным образом (поскольку он считает, что my-category должна быть как переданным, так и именованным параметром).
Это проблема с тем, как я настроил этот маршрут, или это ошибка в CakePHP? Конечно, Router :: reverse ($ request) всегда должен возвращать URL, по которому мы сейчас находимся?
Любой совет приветствуется ...