2013-02-11 37 views
0

我正在開發一個使用Yii框架的Facebook社交網站。作爲登錄用戶可以查看他們在搜索時或通過其他方式獲得的任何用戶的個人資料。在臉書上它發生像一個特殊的應用程序狀態問題

facebook.com/marthajoseph/photos 

在這裏,用戶正在查看「marthajoseph」的配置文件。我想在yii中實現同樣的事情。 目前我做了這樣的事情

myapplication.com/index.php?r=u/default/index?uid=110 

這裏的「u」是用戶模型。 在這裏,我正在查看用戶的用戶標識爲「110」的配置文件。這個問題是每次我切換用戶的照片,配置文件,帖子等我必須追加這個uid查詢字符串與導致不穩定的URL。

我該如何實現Facebook的喜歡的東西?

+0

檢查[URL管理(http://www.yiiframework.com/doc/guide/1.1/ en/topics.url)文件。這應該讓你開始 - 讓我們知道如果你需要更多的幫助。 – ernie 2013-02-11 22:06:23

回答

1

上述

首先,對於URL使用路徑格式如提及厄尼我建議完全重寫使用Yii URL Management的URL。這是通過首先取消註釋urlManagerprotected/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> 

的另一件事,規則解釋從上到下,和第一個匹配的規則將被使用。

希望這可以幫助你在正確的道路上。看看下面的帖子,如果你還停留:

+0

我正在等待 example.com/u/10/photos --- example.com/u/10/posts --- example.com/u/10/activitiylog --- 等etc – 2013-02-12 19:45:56

+0

Only 「照片」不是目標 – 2013-02-12 19:47:12

+0

u//photos'=>'user/viewphotos''應該這樣做(這是指向UserController actionViewphotos),您可以通過'$ _GET ['uid 「]'。讓我知道如果你仍然有問題:) – 2013-02-12 23:11:52