有没有一种方法可以转换“+";至“-";在URL Yii2中


Is there a way to convert "+" to "-" in URL Yii2?

我正在尝试更改paramlinks,以便在yii2应用程序中包含帖子的名称。

example.com/item/hello+world

example.com/item/hellow-world

以下是我在frontend/config/main.php 中的urlmanager中的规则

'urlManager' => [
            'class' => 'yii'web'UrlManager',
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            'enableStrictParsing' => false,
            'rules' => [
                '/' => 'site/index',
                'item/<title:[A-Za-z0-9 -_.]+>' => 'item/view',
            ],
        ]
$hi = 'example.com/item/hello+world';
$hi = str_replace('+', '-', $hi);
echo $hi;

像这样,你可以用str_replace 替换你需要替换的东西

输出:

example.com/item/hellow-world

您显示的输出url被放在一个变量中,然后我填写我想要替换的+,应该覆盖它的是-符号,然后再次将其存储在名为$hi的变量中。

您的问题是Url::toRoute方法。默认情况下,它将用"+"替换空格。而且没有任何配置可以改变这一点(至少我没有找到)。

你可以使用str_replace,比如上面提到的@baboizk,或者,如果你想覆盖任何重音、符号等,你可以使用BaseInflector::slug。示例:

Url::toRoute(['item/view', 'title' => BaseInflector::slug($model->title)]);

但我仍然不确定您的actionItem是如何工作的,因为它可能需要按标题搜索模型,而您正在更改它。