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

问题描述 投票:0回答:1

我与yii2(最近在Yii的1.3工作)玩耍和需要帮助的配置/写地址,管理规则我最喜欢的网址,sheme。

如实施例,我想调用从test动作xmpleController 2个参数。

一个正常的GET请求将是这样的:

?param1=value1&param2=value2

此刻,我的网址是这样的:

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

这是URL应该怎么样子:

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

这里有我的网址,管理规则:

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

没有任何人有一个想法,我怎么可以用我最喜欢的URL方案?我想达到我的目标的唯一方法是编辑urlManager规则,但我没有在这方面的经验。也许有人在这里有一些提示给我吗?

谢谢你的帮助!

php url routing yii2
1个回答
0
投票

你开始做你想要的URL格式之前,您需要先了解哪些格式的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,并用正确的URL规则xmple/test查询参数param1 100。要使用漂亮的URL格式,则需要根据有关的URL看起来应该像实际需求来设计的URL规则集。 这条规则能满足上述声明'xmple/<param1:\d+>' => 'xmple/test',

Read More一下这里

因此,它是不会被显示

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

index.php/xmple/test/value1/value2index.php/xmple/value1/value2xmple/test/value1/value2

如何创建规则

可以yii\web\UrlManager::$rules配置为与键是所述patterns阵列和值相应routes

Read More这里

您可以使用规则'xmple/test/<param1:\w+>/<param2:\w+>'=>'xmple/test'考虑到你将派出匹配任何文字字符参数(等于[a-zA-Z0-9_])作为参数,这将xmple/test/value1/value2'showScriptName' => false,否则输出index.php/xmple/test/value1/value2

如果该规则将被用于单个控制器/动作,也可以如所描述的使用或使用其允许用于多个路由匹配的URL规则parameterized routes

您可以将您urlManager更改为以下

'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [
             'xmple/test/<param1:\w+>/<param2:\w+>'=>'xmple/test'
        ],
 ],
© www.soinside.com 2019 - 2024. All rights reserved.