yii2 定义路由规则的语法

Syntax for defining rules for routes in yii2

我正在使用 Yii2 的漂亮 urls 并且想玩转我的 UrlManager 中定义的规则,但没有找到任何关于如何在 [=13= 中定义变量的文档] 规则集。找到了一些例子,比如

'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'enableStrictParsing' => false,
            'rules' => [
                "home" => "site/index",
                "login" => "site/login",
                "sign-up" => "site/sign-up",
                '<controller:[\w-]+>/<id:\d+>' => '<controller>/view',
            ],
        ],

但是 :[\w-]+:\d+ 代表什么?

例如,如果我想定义一个指向需要两个参数的操作的模式怎么办

class MyController extends Controller{
    ...
    public function actionMyAction($param1, $param2){
        ...
    }
}

现在我希望我的网络用户在 url 栏中键入 www.mysite.com/my-controller/my-action/X-Y,其中 X$param1 的值,Y 是值$param2 并使用 - 作为参数分隔符。

谢谢。

[\w-]+和\d+是正则表达式,第一个表示任意字母或破折号,重复一次或多次,部分只表示数字,重复一次或多次

在规则表达式中,您使用 <variable name:regex> 为您的路由放置一个占位符,该占位符将解析为传递给您的控制器操作的变量。

如果 $param1 和 $param2 都是数字,规则应该如下所示。

'my-controller/my-action/<param1:\d+>-<param2:\d+>' => 'my-controller/my-action',

如果需要字母,请将 \d 换成 \w。