2016-08-12 58 views
1

我想要什么的Yii 2.替换 “+” 网址 “ - ”

我要替换 “+”,在URL-ATTRIB为 “ - ”。我正在使用Yii 2.

我想使用带“ - ”的工作网址。 URL :: to(...)用“ - ”生成URL。我希望用户在他的浏览器地址面板中看到“ - ”。

<siteneme>/hospital/U.S.A./Cleveland+Clinic 

对此

<siteneme>/hospital/U.S.A./Cleveland-Clinic 

我有什么

这是我web.php

'urlManager' => [ 
      'enablePrettyUrl'  => true, 
      'showScriptName'  => false, 
      'enableStrictParsing' => false, 
      'rules'    => [ 

       //Site controller, hospital action 
       'hospital/<location>/<name>' => 'site/hospital', 

       '<controller:\w+>/<action:\w+>'    => '<controller>/<action>', 

       //removing 'controller' form URL 
       '<alias:index|search|detail|result|hospital>' => 'site/<alias>', 
      ], 

     ], 

这是怎么考虑生成URL:

<?= Url::to([ 
       'hospital', 
       'location' => $item->locations['name'], 
       'name'  => $item->attributes['name'] ]); ?> 
+0

我想你是指' /医院/美国/克利夫兰 - 诊所? –

+0

@Tom当然是。谢谢) –

+1

您需要更具体地了解您的请求。你想用 - 而不是+来创建新的URL吗?或者你想在用户输入+还是想要获取时将用户重定向到URL--而不是控制器的操作中的+? – Bizley

回答

2

+是因为URL编码空格字符的产生。

如果你想只改变+-你可以做这样的事情:

<?= Url::to([ 
    'hospital', 
    'location' => str_replace(' ', '-', $item->locations['name']), 
    'name'  => str_replace(' ', '-', $item->attributes['name']) 
]); ?> 

这将名称更改每一个空间-(在本例这里既有位置和名称更改),并进行了urlencoded -未被修改。

+0

Ahahahahaha ...答案很明显,我的问题很愚蠢)谢谢) –