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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cakephp路由:使用破折号打破了它相关的知识,希望对你有一定的参考价值。

我有以下2条路线。

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

虽然第一个工作,第二个没有。

我究竟做错了什么 ?

谢谢!

答案

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

另一答案

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

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

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

以上是关于Cakephp路由:使用破折号打破了它的主要内容,如果未能解决你的问题,请参考以下文章

如何计算破折号媒体片段名称的 $Time$ 变量?

CakePHP - 从插件加载路由文件

CakePHP 中的本地化路由:如何重定向到默认语言

如何在 next.js 中管理 i18n 路由以使用斜杠而不是破折号

CakePHP - 如何使用 slug 进行反向路由?

Cakephp 3 带有语言参数的路由