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

时间:2012-02-08 13:29:56

标签: cakephp-1.3

我有一个使用多个前缀的应用程序,虽然不常见,但在我们进行时添加前缀也并不罕见。令人痛苦的是,默认情况下,Router::url()方法假定如果没有明确指定前缀,那么构建的任何url都应该继承当前页面的前缀。

这似乎是一个非常刻意的行动,所以我假设大多数人发现它更有用,但我觉得简单地构建我的URL的URL更加可读/可维护,其中URL需要一个,如果没有,就把它关掉。很久以前,我创建了AppHelper::url()来覆盖Helper::url(),它假设什么都没有,并且只在明确请求时构建带有前缀的URL,这对视图中生成的链接有很大的帮助。

然而,还有另一种情况,我想覆盖并且没有找到一种“干净”的方式来解决它。考虑一个未经身份验证的用户,该用户已将指向管理资源的链接添加为书签(例如/admin/thing_that_needs_to_be_administered/some_action)。他/她点击该书签,但未登录,因此他/她被重定向。他/她被发送到不存在的/users/login,而不是被重定向到/admin/users/login。糟糕。

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

我认为这在Cake 2中变得更容易,但我们正在使用Cake 1.3。

任何想法都会非常感激。

1 个答案:

答案 0 :(得分:0)

如果你还没有,我会建议尝试这条路线:

编辑:抱歉,loginAction

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

这将明确设置登录网址。