2013-10-10 5 views
0

Как переписать hardcoded url в yii?Как переписать hardcoded url в yii?

Я сделал URL следующим образом,

CHtml::link($visit->health_institute_name, array('hospitals_single', 'id'=>$visit->health_institute_id));

Это redireceted к URL, как следовать, http://abc.com/hospital?name=yyy&id=14#ad-image-0 Я просто хочу, чтобы URL быть следующим, http://abc.com/yyy

т.е. мне нужно для удаления больницы? name = и & id = 14 # ad-image-0 from url ...

Может ли кто-нибудь помочь?

+0

Добавить правила в urlManager в main.php, http://www.yiiframework.com/doc/guide/1.1/en/topics.url проверить этот URL. –

+0

Этот тип URL (http://example.com/some-name-from-db) немного отличается, см. Мой ответ: http://stackoverflow.com/questions/19025630/yii-framework-user-friendly -url/19027460 # 19027460 –

ответ

1

В правилах urlManager, добавьте это после того, как все другие правила:

'<name>' => 'hospital/view', 

предполагая view это действие, которое вы хотите назвать - замените его имя действия

Тогда ваша ссылка выглядит следующим образом:

CHtml::link($visit->health_institute_name, Yii::app()->getBaseUrl(true).'/'.$visit->name); 
0

, если вы хотите, чтобы сделать удобным и сео-дружеский как 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 
    } 
} 

Больше informatino там! http://www.yiiframework.com/doc/guide/1.1/fr/topics.url#using-custom-url-rule-classes