2012-05-15 33 views
0

一個網址我想轉換一個URL這是格式「美化」 Yii中

路徑/要/我的/應用/ Controller_action/ID/2

路徑/要/我的/應用/ Controller_action/ID/User_corresponding_to_id_2

我已經š來自Yii的教程,但它不能幫助我完成任何事情。誰能幫我這個?

編輯:我也想知道,如果這件事情甚至可能在POST情況下,即我將只有路徑/到/我的/應用程序/ Controller_action在URL中。

+0

您是否有理由需要使用Yii來進行重寫?使用.htaccess重寫規則會更簡單。 http://roshanbh.com.np/2008/03/url-rewriting-examples-htaccess.html – Gregology

+0

事情就是它的一切動態。如果我必須將path/user =「someName」轉換爲path/someName,我會很樂意將它寫入.htaccess文件。 –

+0

關於你的編輯:真的不要這樣做。只有在數據庫中的數據發生變化時纔會使用POST。它還會向訪問者顯示一個「你確定要再次發佈表單」的選項。 – Blizz

回答

1

在您的用戶模型添加到getURL方法

public function getUrl() 
{ 
    return Yii::app()->createUrl('controller/action', array(
    'id'=>$this->id, 
    'username'=>$this->username, 
    )); 
} 

添加以下規則urlManager成分config/main.php

'controller/action/<username:.*?>/<id: \d+>'=>'controller/action' 

和使用模式url虛擬屬性到處

+0

嘿,這個東西有用,但我需要更多的說明。有一件事是,現在我需要添加用戶名作爲我的行動功能的參數!另外,你能告訴我如何創建一個類似的東西,當我** POST **一個頁面,並沒有得到它。 –

+0

我沒有得到你的意思是POST一頁。請澄清,如果可能的話用一個例子來解釋 – dInGd0nG

+0

我的意思是表單操作 - GET和POST。我認爲這個URL重寫僅適用於GET(即在URL中傳遞參數)。我錯了嗎? –

1

dInGd0nG是在正確的軌道上,但如果我und如果你想正確地使用實際的用戶名而不是ID,那麼對嗎?

在Yii中並不難。我假設這裏爲簡單起見,控制器是用戶,操作是視​​圖。

您的用戶控制器:

public function actionView($id) 
{ 
    if (is_numeric($id)) 
     $oUser = User::model()->findByPk($id); 
    else 
     // Luckily Yii does parameter binding, wouldn't be such a good idea otherwise :) 
     $oUser = User::model()->findByAttributes(array('username' => $id)); 

    ... 
} 

你urlManager配置:

'user/view/<id: \w+>' => 'user/view', 

或者更一般地說:

'user/<action: \w+>/<id: \w+> => 'user/<action>', 

在視圖中生成一個用戶網址:

$this->createUrl('user/view', array('id' => $oUser->username));