当使用params时,Yii2在Url :: to()路由中剥离结束斜杠

时间:2015-01-22 16:25:32

标签: php yii2

我正在使用Yii2,并且一直使用Url::to方法,没有任何问题。现在我第一次用params尝试了它,它从我的路线中删除了结束斜杠。

通常,说我会这样做:

Url::to('/my/route/', true);
// http://www.example.com/my/route/

但如果我想通过params,例如:

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 个答案:

答案 0 :(得分:2)

1)您可以通过将suffix添加到包含该路线的相应网址规则来实现这一目标:

'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();

之前添加此行