2013-12-09 6 views
1

привет У меня есть сомнения в перезаписи URL в Yii ...Как сделать URL, как этот

теперь, когда я открываю один конкретный пищевой продукт из списка пищи я получаю URL www.example.com/food/12345. здесь пища - это имя контроллера и 13245 is foodId.

, но я хочу переписать выше url как www.example.com/food/new-sweet-canada, когда я открываю этот товар для просмотра (подробности). здесь новый-сладкий-canada стоит (новый или старый/тест/место из пищи talbe) ...

поэтому вместо foodId я хочу показать другие атрибуты этой пищи из таблицы db. я думаю, мне нужно написать правила URL для этого.

Я хочу этого, потому что я хочу сделать URL-адрес SEO дружественным так.

но я понятия не имею, как это сделать? или это возможно?

это мой URL правила массив()

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

Заранее спасибо

+0

Как вы делаете www.example.com/food/12345 работает, в .htaccess или сам yii? – Andrew

+0

Я только что раскопал Yii default ulr manager code –

ответ

0

Может быть, это помогает

Yii::app()->controller->createUrl("food", array("foodId"=>"$old-$test-$location")); 

$old где, $test и $location содержит ваш old/test/location

+0

Я хочу изменить url buddy not db query –

+0

так как вы делаете URL? показать код тогда .. – zzlalani

+0

обновил мой вопрос –

1

Вам придется написать функцию, которая принимает в $ _GET переменную в качестве метки пищи, находит идентификатор, используя $ model-> findByAttribute (массив ('label' => $ _ get)), а затем .. визуализируйте страницу, передав модель.

так вместо того, чтобы ваши действия будучи actionFood ($ ID) он бы actionFood ($ этикетка)

0

В этом примере используется mod_rewrite (поместите его в файл htaccess):

RewriteEngine On 
RewriteRule index.php/([A-Za-z0-9]+)/([A-Za-z0-9]+)$ index.php?$1=$2 [QSA,L] 
RewriteRule index.php/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+)$ index.php?$1=$2&$3=$4 [QSA,L] 

Затем доступ к вашей информации можно получить через $ _GET. Затем вы можете вызвать свою страницу, например, www.example.com/asd/qwe, и для вашего сценария это будет похоже на www.example.com?asd=qwe

Я рекомендую узнать что-то об mod rewrite как очень маловероятно, что этот пример будет работать из коробки для вас.

0

Вы можете определить правила для контроллера пищевых продуктов, отделенные от других.

'food/delete/<id:\d+>'=>'food/delete', 
'food/create'=>'food/create', 
// ... also other food controller methods 
'food/<attr:\w+>'=>'food/view', 
'<controller:\w+>/<id:\d+>'=>'<controller>/view', 
'<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>', 
'<controller:\w+>/<action:\w+>'=>'<controller>/<action>', 

Yii url management document может быть полезно.

+0

У меня есть методы diff say create, delte и все .. но я хочу применить его только для просмотра –

+0

@ 404NotFound answers отредактировал –

Смежные вопросы