Yii2将控制器的所有动作重定向到一个

时间:2020-01-24 09:14:08

标签: yii2

我想将对控制器的每个请求重定向到单个动作。不会有静态内容-动作将自行处理路由。例子:

Controller/ => controller/index
Controller/action => controller/index
Controller/action/ => controller/index
Controller/action/dynamicparameter => controller/index

我在controller* => controller/index的帮助下尝试了Yii1的建议,但是它不起作用。我尝试了controller/* => controller/index,但也没有成功。当我给它controller/<action:\w+>时,我可以使用控制器/动作,但仅此而已。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果操作的位置将在url中更改,则您将不得不使用它来达到您的实际需求。

尝试将操作后的所有内容分配给某个参数。

'<controller:\w+>/<action:\w+>' => 'controller/index',
'<controller:\w+>/<action:\w+>/<actionId:[\w\/]*>' => 'controller/index'

在这种情况下,您将有一个名为actionId的附加$ _GET参数,该参数将存储所有操作后的内容(如果您有操作后的内容)。

示例:

controller1/someaction => controller/index actionId = null
controller1/someaction/ => controller/index actionId = null
controller2/actionwithparam/param1 => controller/index actionId = param1
controller3/actionwithparam/param1/param2 => controller/index actionId = param1/param2

另外请注意:在本示例中,我们仅将\ w作为正则表达式。这意味着网址部分只能包含A-Za-z0-9_

相关问题