Cakephp路由:使用破折号打破了它

时间:2012-09-03 19:42:13

标签: cakephp routing

我有以下两条路线。

Router::connect('/photo-gallery/:slug-:id', 
                    array('controller' => 'company_categories', 'action' => 'photo_gallery'),
                    array(
                        'pass' => array('id'),
                        'id' => "[0-9]+"
                    )
    );


Router::connect('/:slug-my-string-:id',
                    array('controller' => 'company_categories', 'action' => 'category_companies'),
                    array(
                        'id' => "[0-9]+",
                        'pass' => array('id')
                    )
    );

虽然第一个有效,但第二个没有。

我做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:3)

你的第二条路线不起作用,因为整个字符串“:slug-my-string”被解析为一个路由元素而不仅仅是“:slug”。 Reference

答案 1 :(得分:0)

我最终找到并且按预期工作的解决方案如下:

Router::connect('/:slug-:string-:id',
                    array('controller' => 'company_categories', 'action' => 'category_companies'),
                    array(
                        'id' => "[0-9]+",
                        'string' => "my-string"
                        'pass' => array('id')
                    )
    );

这样我可以处理路由url模式中使用的所有类型的静态字符串,并且对于破折号(“ - ”)的解析没有任何问题,我认为这是问题所在。