我正在尝试更改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是如何工作的,因为它可能需要按标题搜索模型,而您正在更改它。