Как переписать жестко закодированный URL в yii?
Как переписать жестко закодированный URL в yii?
Я сделал URL следующим образом,
CHtml:: link ($ visit-> health_institute_name, array ('hospitals_single', 'id' => $ visit-> health_institute_id));
Он перенаправлен на URL следующим образом: http://abc.com/hospital?name=yyy&id=14 Я просто хочу, чтобы URL был следующим, http://abc.com/yyy
То есть: мне нужно удалить больницу? name = и &id=14#ad-image-0 из ссылки...
Может ли кто-нибудь помочь?
2 ответа
В ваших правилах urlManager добавьте это после всех других правил:
'<name>' => 'hospital/view',
при условии, view
это действие, которое вы хотите вызвать - замените его на имя действия
Тогда ваша ссылка выглядит следующим образом:
CHtml::link($visit->health_institute_name, Yii::app()->getBaseUrl(true).'/'.$visit->name);
Если вы хотите сделать пользователя дружественным и оптимизированным для поисковых систем, например http://abc.com/hospital/yyy
Вы можете использовать это:
class CarUrlRule extends CBaseUrlRule
{
public $connectionID = 'db';
public function createUrl($manager,$route,$params,$ampersand)
{
if ($route==='car/index')
{
if (isset($params['manufacturer'], $params['model']))
return $params['manufacturer'] . '/' . $params['model'];
else if (isset($params['manufacturer']))
return $params['manufacturer'];
}
return false; // this rule does not apply
}
public function parseUrl($manager,$request,$pathInfo,$rawPathInfo)
{
if (preg_match('%^(\w+)(/(\w+))?$%', $pathInfo, $matches))
{
// check $matches[1] and $matches[3] to see
// if they match a manufacturer and a model in the database
// If so, set $_GET['manufacturer'] and/or $_GET['model']
// and return 'car/index'
}
return false; // this rule does not apply
}
}
Больше информации там! http://www.yiiframework.com/doc/guide/1.1/fr/topics.url#using-custom-url-rule-classes