我在我的用户的方法控制器类似于:

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')
    )
);

http://book.cakephp.org/view/46/Routes-Configuration

其他提示

与尝试

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'));

请注意,我没有测试它,但我认为你必须逃离结肠。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top