我正在使用yii2(最近在Yii 1.3中工作),并且需要帮助来配置/编写我最喜欢的URL-sheme的Url-Manager规则。
作为示例,我想从具有两个参数的test
中调用动作xmpleController
。
正常的GET请求如下所示:
?param1=value1¶m2=value2
此刻,我的网址看起来像这样:
index.php/xmple/test/?param1=value1¶m2=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规则,但是我对此没有任何经验。也许有人在这里对我有暗示?
感谢您的帮助!
答案 0 :(得分:0)
开始制作所需的URL格式之前,首先需要了解在Yii2中工作时URL管理器支持哪些格式。以及如何创建规则来创建这些格式。
默认URL格式使用名为r
的查询参数表示路由,并使用普通查询参数表示与路由关联的查询参数。 URL /index.php?r=xmple/test¶m1=100
代表路线xmple/test
和param1
查询参数100
。默认的URL格式不需要URL管理器的任何配置,并且可以在任何Web服务器设置中使用。
使用输入脚本名称后面的额外路径表示路由和关联的查询参数。例如,URL /index.php/xmple/100
中的额外路径为/xmple/100
,它可能代表路线xmple/test
和param1
查询参数{{1} },并使用正确的网址规则。要使用漂亮的URL格式,您将需要根据有关URL外观的实际要求设计一组URL规则。
此规则可以满足上述声明100
Read More在这里
所以它不会显示
'xmple/<param1:\d+>' => 'xmple/test',
但
index.php/xmple/test/param1/value1/param2/value2
或index.php/xmple/test/value1/value2
或index.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,