2017-09-14 54 views
0

我希望能够通过/URLYii2 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 

谁能帮我,它需要我。

回答

0

随着2个PARAMS(或任何已知的数量真的),你可以将此模式扩展:

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

无限数量则params的,我不认为它的工作原理与UrlRule级。你需要编写自己的课程并进行更换。不明白为什么你想有无限的参数数量。另外一个网址不能无限长。

---编辑---

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

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

其实我不想有无限的参数我的意思是无限的2-4参数,但我搜索很多,你的权利,为无限参数我应该写我自己的UrlRule类,感谢您的好回答 – Zahra

+0

你必须定义你的URL与YII路线,否则它会路由。 – Bira