题
我在我的用户的方法控制器类似于:
function members($type = null, $category = null) { ... }
两者PARAMS是可选的,并且可以一起或单独使用。
因此,与以下的路径。
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
我怎么能设置我的路线,使它们都可以正常工作?
解决方案
命名参数不automagicaly映射到该动作。您可以通过调用让他们
$这 - > passedArgs [ '类型']或$这 - > passedArgs [ '类别']
,或通过使用在路由器的第三参数::连接:
Router::connect(
'/members/*',
array('controller' => 'users', 'action' => 'members'),
array(
'pass' => array('type', 'category')
)
);
其他提示
与尝试
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'));
请注意,我没有测试它,但我认为你必须逃离结肠。
不隶属于 StackOverflow