我一直在使用与“弹头”作为路由命名参数,例如:CakePHP的反向路由问题
Router::connect('/category/:slug', array('controller'=>'categories', 'action'=>'view'), array('pass'=>array('slug'), 'slug'=>'[a-z0-9\-]+'));
我现在已经跨越了问题迷迷糊糊,因为我想限制上述路线记录只有用户,所以我把这个在我的CategoriesController的beforeFilter()函数:
if(!$this->Auth->loggedIn()) {
$this->Auth->deny('view');
}
现在,如果我去/类别/我的类别(而登出)我会被重定向到我应用程序的登录页面,不幸的是我登录后,我被重定向到/ categories/view/my-category/slug:my-category
这是由于线路AuthComponent.php,在那里我们有317:
$this->Session->write('Auth.redirect', Router::reverse($request));
如此看来,当我上面的路线上做路由器::反向($请求),它不能正常工作(因为它认为“我的类别”应该是一个通过参数和一个命名参数)。
这是我设置此路线的方式的问题,还是它与CakePHP的错误?当然,Router :: reverse($ request)应该总是返回我们当前所在的URL?
任何意见赞赏...