Cakephp 1.3 有没有办法防止“前缀继承”?

Cakephp 1.3 有没有办法防止“前缀继承”?,cakephp-1.3,Cakephp 1.3,我有一个应用程序,它使用了几个前缀,虽然不经常使用,但在我们进行的过程中添加前缀也不少见。使这种情况变得痛苦的是,默认情况下,Router::url方法假定,如果没有明确指定前缀,则任何生成的url都应该继承当前页面的前缀 这似乎是一个非常深思熟虑的行为,所以我假设大多数人认为它比没有更有用,但我发现,只要在URL需要前缀的地方构造URL,而在不需要前缀的时候将其关闭,就更容易阅读/维护。很久以前,我创建了AppHelper::url来覆盖Helper::url,它不承担任何内容,只在显式请求时

我有一个应用程序,它使用了几个前缀,虽然不经常使用,但在我们进行的过程中添加前缀也不少见。使这种情况变得痛苦的是,默认情况下,Router::url方法假定,如果没有明确指定前缀,则任何生成的url都应该继承当前页面的前缀

这似乎是一个非常深思熟虑的行为,所以我假设大多数人认为它比没有更有用,但我发现,只要在URL需要前缀的地方构造URL,而在不需要前缀的时候将其关闭,就更容易阅读/维护。很久以前,我创建了AppHelper::url来覆盖Helper::url,它不承担任何内容,只在显式请求时构建带有前缀的url,这对视图中生成的链接有很大帮助

然而,还有另一个我想忽略的场景,并且还没有找到一个干净的方法来解决它。考虑一个未经身份验证的用户,该书签标记了一个管理资源的链接,例如/admin/thigy。他/她点击了那个书签,但没有登录,所以他/她会被重定向。不再重定向到/users/login,而是将s/he发送到不存在的/admin/users/login。哎呀

还有其他人找到了他们真正喜欢的方法吗?这样做的目的是不必在重定向完成的任何地方都将每个前缀显式设置为false。当添加前缀时,这只是太多的维护

我认为这在蛋糕2中变得容易了,但我们在蛋糕1.3上运行


如果您有任何想法,我将不胜感激。

如果您尚未:

编辑:对不起,登录

<?php
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login', 'admin' => false );
?>

这将显式设置登录url。

是否是执行重定向的Auth组件?如果需要,您可能需要在应用程序控制器的beforefilter中创建一个处理程序来处理重定向。在本例中,是的,但如果在没有必要值的情况下调用带有另一前缀的页面,则它也可能是自定义重定向。是的,这就是我在短期内所做的,但我必须显式地将每个前缀设置为false,然后在每次添加前缀时维护该路由。我所追求的是一种绕过持续维护的方法。不幸的是,除了修改内核之外,我不知道还有其他方法。我也是。理想情况下,我希望扩展Router类并重写其url方法,但它都是静态的,并且直接调用,因此这不是一个真正的选项:谢谢