我的用户控制器中有一个方法类似于:
function members($type = null, $category = null) { ... }
这两个参数都是可选的,可以一起使用或单独使用。
所以使用以下路线。
Router::connect('/members/*', array('controller' => 'users', 'action' => 'members'));
http://example.com/users/members
成功变为http://example.com/members
。
不幸的是,以下内容不起作用
http://example.com/members/type:cat
http://example.com/members/category:dog
http://example.com/members/type:cat/category:dog
我怎样才能设置路线以使它们都能正常工作?
答案 0 :(得分:2)
命名参数不会自动映射到操作。您可以通过致电
来获取它们$ this-> passedArgs ['type']或$ this-> passedArgs ['category']
或使用Router :: connect中的第3个参数:
Router::connect(
'/members/*',
array('controller' => 'users', 'action' => 'members'),
array(
'pass' => array('type', 'category')
)
);
答案 1 :(得分:1)
尝试
Router::connect('/members/type\:(.*)', array('controller' => 'users', 'action' => 'members_type'));
Router::connect('/members/category\:(.*)', array('controller' => 'users', 'action' => 'members_category'));
Router::connect('/members/type\:(.*)/category:(.*)', array('controller' => 'users', 'action' => 'members_type'));
请注意,我没有测试它,但我认为你必须逃脱冒号。