上述
首先,對於URL使用路徑格式如提及厄尼我建議完全重寫使用Yii URL Management的URL。這是通過首先取消註釋urlManager
行protected/config/main.php(默認情況下在第34行左右)完成的。這樣做是讓你用「漂亮網址」,例如,而不是URL看起來像這樣:
www.example.com/index.php?r=user/profile?uid=110
你可以把它像這樣:
www.example.com/user/110
因此,例如,如果我們想的路線,其具有結構profile/<a users id>
任何URL給我們的用戶控制器查看行動(的actionView),我們可以這樣做:
'urlManager'=>array(
'urlFormat' => 'path',
'showScriptName' => false,
'rules' => array(
'user/profile/<id:.+>' => 'user/view',
...
所以在陣列的左側我們有「網址的樣子」,右側有「它指向的地方」。然後,您可以訪問id
值在您的視圖或控制器使用$_GET
,例如:
echo "You are viewing user id ".$_GET['id'];
你可以使用這個值來查詢與該用戶相關的照片或個人資料的內容或什麼的。就URL中的用戶名(例如,Facebook如何操作,例如:facebook.com/myusername
)而言,您很可能會讓用戶在該行的某處輸入vanity URL並將其存儲在數據庫中。然後,您可以將您的規則更改爲類似:
'user/profile/<user_vanity_url:.+>' => 'user/view',
然後訪問該值同上使用$_GET
。如果你走這條路線,一條建議是要記住,你應該阻止用戶查看他們不允許查看的內容,例如查看不是他們的朋友的人的照片。我會假設你有某種存儲這些關係的表?
關於必須追加通過URL傳遞的id或任何值,您可以簡單地將其追加到視圖中或創建HTML的任何位置,例如,如果要顯示鏈接到用戶的照片,從他們的個人資料頁面上,你可以這樣做:關於你的urlManager的URL規則
<a href="<?php echo Yii::app()->request->baseUrl; ?>/photos/<?php echo $_GET['id']; ?>"></a>
的另一件事,規則解釋從上到下,和第一個匹配的規則將被使用。
希望這可以幫助你在正確的道路上。看看下面的帖子,如果你還停留:
檢查[URL管理(http://www.yiiframework.com/doc/guide/1.1/ en/topics.url)文件。這應該讓你開始 - 讓我們知道如果你需要更多的幫助。 – ernie 2013-02-11 22:06:23