我正在尝试创建一个像mysite.com/username/controller/action/params这样的自定义路由。基本上,在用户通过身份验证后,其用户名将显示在域之后的URL中。
我尝试了书中的例子,但没有运气。
这是我尝试但没有帮助: Router :: connect('/:username /:controller /:action',array()); Router :: connect('/:controller /:action',array());
你们能帮助我吗?
提前致谢,
丹尼斯
答案 0 :(得分:2)
Cake不会自动知道路线的:username
参数的含义。有三个默认参数无需进一步配置,即:
:controller
:action
: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以供进一步参考。