在yii2

时间:2018-04-02 15:18:07

标签: yii2 routes url-routing

我正在使用Yii2的漂亮网址,想要使用我UrlManager中定义的规则,但没有找到关于如何在'pattern' => 'route'规则集中定义变量的任何文档。找到了一些像

这样的例子
'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){
        ...
    }
}

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

感谢。

1 个答案:

答案 0 :(得分:2)

[\ w - ] +和\ d +是正则表达式,第一个表示任何字母或短划线字符,重复一次或多次,该部​​分仅指示数字,重复一次或多次。

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

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

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

如果你需要字母,请交换\ w。