CakePHP中URL路由配置中的用户名

时间:2012-01-22 20:32:58

标签: cakephp routing

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

我尝试了书中的例子,但没有运气。

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

你们能帮助我吗?

提前致谢,

丹尼斯

1 个答案:

答案 0 :(得分:2)

Cake不会自动知道路线的:username参数的含义。有三个默认参数无需进一步配置,即:

  1. :controller
  2. :action
  3. :plugin
  4. 所有其他参数都需要使用匹配的正则表达式指定,此外,您需要指定一个名为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以供进一步参考。