2013-12-09 54 views
1

您好我在URL中的Yii重寫有疑問...如何使URL這樣

現在,當我從食物中我得到URL www.example.com/food/12345的列表中打開一個特定的食物。這裏食物是控制器名稱13245是foodId

但我想重寫上面的url像www.example.com/food/new-sweet-canada當我打開食品查看(詳細信息)。這裏新甜加拿大是代表(新的或舊的/測試/位置從食物talbe)...

所以,而不是foodId我想顯示該食物從數據庫表的其他屬性。我想我必須爲此編寫url規則。

我想要它,因爲我想使URL的搜索引擎優化如此友好。

但我不知道該怎麼做?或者有可能嗎?

這是我的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默認的ulr管理員代碼 –

回答

0

可能這有助於

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

其中$old$test$location包含您old/test/location

+0

我想更改url好友而不是db查詢 –

+0

所以你怎麼做的網址?顯示代碼然後.. – zzlalani

+0

更新我的問題 –

1

你將不得不編寫一個函數這需要在$ _GET變量作爲食品的標籤,使用查找ID $ model-> findByAttribute(array('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

我建議學習一些關於國防部重寫爲這個例子不太可能適合你。

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

我有差異的方法說創造,delte和所有..但我想只適用於查看 –

+0

@ 404NotFound編輯編輯 –

相關問題