Yii2创建类似/index.php/viewName/actionName/var1/value1/var2/value2的漂亮URL

时间:2019-02-07 21:25:19

标签: php url routing yii2

我正在使用yii2(最近在Yii 1.3中工作),并且需要帮助来配置/编写我最喜欢的URL-sheme的Url-Manager规则。

作为示例,我想从具有两个参数的test中调用动作xmpleController

正常的GET请求如下所示:

?param1=value1&param2=value2

此刻,我的网址看起来像这样:

index.php/xmple/test/?param1=value1&param2=value2

这是网址的样子:

index.php/xmple/test/param1/value1/param2/value2

这是我的URL管理器规则:

'urlManager' => [
     'enablePrettyUrl' => True,
     'showScriptName' => false,
     'rules' => [
        '<a:\w+>/<b:\w+>/<c:\d+>/<d:\d+>' => 'a/b'
     ],
 ],

有人知道我如何使用自己喜欢的URL方案吗?我认为达​​到我的目标的唯一方法是编辑urlManager规则,但是我对此没有任何经验。也许有人在这里对我有暗示?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

开始制作所需的URL格式之前,首先需要了解在Yii2中工作时URL管理器支持哪些格式。以及如何创建规则来创建这些格式。

支持的URL格式

  • 默认网址格式;

    默认URL格式使用名为r的查询参数表示路由,并使用普通查询参数表示与路由关联的查询参数。 URL /index.php?r=xmple/test&param1=100代表路线xmple/testparam1查询参数100。默认的URL格式不需要URL管理器的任何配置,并且可以在任何Web服务器设置中使用。

  • 漂亮的URL格式。

    使用输入脚本名称后面的额外路径表示路由和关联的查询参数。例如,URL /index.php/xmple/100中的额外路径为/xmple/100,它可能代表路线xmple/testparam1查询参数{{1} },并使用正确的网址规则。要使用漂亮的URL格式,您将需要根据有关URL外观的实际要求设计一组URL规则。

    此规则可以满足上述声明100

Read More在这里

所以它不会显示

'xmple/<param1:\d+>' => 'xmple/test',

index.php/xmple/test/param1/value1/param2/value2index.php/xmple/test/value1/value2index.php/xmple/value1/value2

如何创建规则

您可以将yii\web\UrlManager::$rules配置为键为patterns的数组,并为相应的routes赋值。

Read More在这里

您可以使用规则xmple/test/value1/value2,因为您将要发送与任何单词字符匹配的参数(等于'xmple/test/<param1:\w+>/<param2:\w+>'=>'xmple/test'作为参数,它将与{{1}一起输出[a-zA-Z0-9_]) }或其他xmple/test/value1/value2

如果该规则将用于单个控制器/操作,或者您可以按照说明使用该规则,或者使用parameterized routes允许将URL规则用于匹配多个路由。

您可以将urlManager更改为以下

'showScriptName' => false,