Yii2 使用参数时在 Url::to() 路由中剥离结束斜杠
Yii2 stripping ending slash in Url::to() route when using params
我正在使用 Yii2
并且一直在使用 Url::to 方法,没有任何问题。现在我第一次用参数尝试了它,它从我的路线中去掉了结尾的斜杠。
所以通常情况下,假设我会这样做:
Url::to('/my/route/', true);
// http://www.example.com/my/route/
但是如果我想传递参数,比如:
Url::to('['/my/route/', 'id' => 123, 'name' => 'larry']', true);
// http://www.example.com/my/route?id=123&name=larry
有什么办法可以阻止它这样做吗?如果没有,我还有其他选择吗?
我的 UrlManager
规则:
'rules' => [
[
'pattern' => 'foo/<name:[0-9a-zA-Z\-]+>.<some_id:\d+>',
'route' => 'foo/index',
'suffix' => '/',
],
//.........
],
1) 您可以通过将 suffix
添加到包含该路由的相应 url 规则来实现:
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
[
'pattern' => 'my/route',
'route' => 'my/route',
'suffix' => '/',
],
],
],
],
2) 在全球范围内,它可以通过 urlManager
属性 同名 suffix
.
获得
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'suffix' => '/',
],
],
3) 通过组件设置的替代方法:
Yii::$app->urlManager->suffix = '/';
这也适用于特定路线,只需在调用之前添加此行 Url::to()
;
我正在使用 Yii2
并且一直在使用 Url::to 方法,没有任何问题。现在我第一次用参数尝试了它,它从我的路线中去掉了结尾的斜杠。
所以通常情况下,假设我会这样做:
Url::to('/my/route/', true);
// http://www.example.com/my/route/
但是如果我想传递参数,比如:
Url::to('['/my/route/', 'id' => 123, 'name' => 'larry']', true);
// http://www.example.com/my/route?id=123&name=larry
有什么办法可以阻止它这样做吗?如果没有,我还有其他选择吗?
我的 UrlManager
规则:
'rules' => [
[
'pattern' => 'foo/<name:[0-9a-zA-Z\-]+>.<some_id:\d+>',
'route' => 'foo/index',
'suffix' => '/',
],
//.........
],
1) 您可以通过将 suffix
添加到包含该路由的相应 url 规则来实现:
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
[
'pattern' => 'my/route',
'route' => 'my/route',
'suffix' => '/',
],
],
],
],
2) 在全球范围内,它可以通过 urlManager
属性 同名 suffix
.
'components' => [
'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'suffix' => '/',
],
],
3) 通过组件设置的替代方法:
Yii::$app->urlManager->suffix = '/';
这也适用于特定路线,只需在调用之前添加此行 Url::to()
;