【问题标题】:yii route with unlimited parametersyii 无限参数路由
【发布时间】:2017-09-14 15:06:01
【问题描述】:

我希望能够通过/URL 中为Yii2 Framework 分隔操作参数,

例如:http://localhost/advanced/backend/web/controller/action/parameter1/parameter2

这里的parameter(1,2,...) 不仅仅是idinteger 数字 我在互联网和这里搜索了很多,但我没有找到一个有用的答案,我试过这个:

'<controller:\w+>/<id:\d+>' => '<controller>/view',
                    '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
                    '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
                    '<controller:\w+>/<action:\w+>/*'=>'<controller>/<action>' 

但它不起作用 我必须将参数作为 get 变量传递才能工作

http://localhost/advanced/backend/web/controller/action/?parameterName=value

谁能帮帮我,这对我来说很有必要。

【问题讨论】:

    标签: php yii url-rewriting frameworks


    【解决方案1】:

    使用 2 个参数(或任何已知数字),您可以扩展此模式:

    '<controller:\w+>/<action:\w+>/<param1:\w+>/<param2:\w+>' => '<controller>/<action>',
    

    由于参数数量不受限制,我认为它不适用于 UrlRule 类。您需要编写自己的类并替换。无论如何,不​​明白为什么要拥有无限数量的参数。网址也不能无限长。

    --- 编辑---

    如果你想要 4 个参数,你可以在函数中使用默认值,而不是编写新的 UrlRule 类

    public function actionMyController($param1=null, $param2=null, $param3=null, $param4=null) 
    

    【讨论】:

    • 实际上我不想有无限参数,我的意思是 2-4 个参数不受限制,但是我搜索了很多,你说得对,对于无限参数,我应该编写自己的 UrlRule 类,谢谢你好答案
    • 你必须用YII路由定义你的URL,否则它会路由。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 2016-01-13
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多