【问题标题】:Username in URL route configuration in CakePHPCakePHP 中 URL 路由配置中的用户名
【发布时间】:2012-02-16 09:04:32
【问题描述】:

我正在尝试创建一个像 mysite.com/username/controller/action/params 这样的自定义路由。基本上是在用户通过身份验证后,其用户名出现在域之后的 url 中。

我尝试了书中的例子,但没有成功。

这是我尝试过但没有帮助的方法: Router::connect('/:username/:controller/:action', array()); Router::connect('/:controller/:action', array());

你们能帮帮我吗?

提前致谢,

丹尼斯

【问题讨论】:

  • 嗨..我有同样的问题..你解决了这个问题吗..我需要你的帮助来解决我的问题..
  • 嗨,困惑的男孩。从来没有解决过这个问题,只是放弃并开始使用 Symfony。

标签: cakephp routing


【解决方案1】:

Cake 不会自动知道您对路线的 :username 参数的含义。有三个默认参数不需要进一步配置,它们是:

  1. :controller
  2. :action
  3. :plugin

所有其他参数都需要用匹配的正则表达式指定,另外你需要指定一个名为pass 的数组来告诉Cake 它应该将参数传递给你的控制器对这个页面的操作。在您的情况下,路线可能看起来像这样:

Router::connect(
    '/:username/:controller/:action',
    array(), // Since you already have the controller and action in your URL there is no need for further directions here
    array(
        'pass' => array('username'), // If you want to pass the username to your action
        'username' => '[a-zA-Z0-9]+' // What regex the username should match
    ),
); 

另请参阅本书关于路由的页面,特别是this paragraph 以供进一步参考。

【讨论】:

  • 您好 oldskool,谢谢您的回答。我尝试了您的示例并多次阅读了这本书,但仍然没有运气,cakePHP 找不到这条路线。例如,在我的布局中,我有一个元素使用 requestAction 来检索菜单类别( categories/loadCategories )。当我将用户名添加到 URL 时,cake 会抛出一个丢失的控制器并指向“loadCategories”作为丢失的控制器。如果这是特定于它的东西,我正在使用 CakePHP 2.0。谢谢,丹尼斯
猜你喜欢
  • 2011-03-03
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 2014-01-01
  • 2011-07-09
相关资源
最近更新 更多