2011-04-18 54 views
0

我試圖創建一個應用程序,它允許用戶創建一個帳戶,然後創建自己的頁面。Cakephp - 我想允許用戶創建自己的頁面,其網址將是他的名字

我想先和和姓氏使用用戶的組合作爲其網頁的網址,即mywebsite.com/john_smith

顯然,我需要與apropriate行動創建一個控制器,但我怎麼去使它具有我想要的網址?順便說一下,我已經通讀了一大堆手冊(所有關於路由esp的內容),並閱讀了大量的教程和一些書籍,但是我沒有遇到任何解釋這一點的內容。

任何幫助將不勝感激。

回答

0

建議在用戶表中創建例如網址新列。

users_controller.php特定的查看功能,所以你可以通過url無法通過id到達用戶頁面。

function view($url = null) { 
    if (!$url) { 
    $this->Session->setFlash(__('Invalid product', true)); 
    $this->redirect(array('action' => 'index')); 
    } 
    $this->set('user', $this->User->find('first',array('conditions'=>array('User.url' => $url)))); 
} 

routes.php文件

Router::connect('/*', array('controller' => 'users', 'action' => 'view')); 

但是,這可以,如果你使用的是其他控制器導致的問題。所以我使用的是這樣的:

$usersModel = ClassRegistry::init('User'); 
$users = $usersModel->find('all');  
foreach($users as $user){ 
    Router::connect('/'.$user['User']['url'], array('controller' => 'users', 'action' => 'view',$user['User']['url'])); 
} 

我處理了類似的問題,所以你可以檢查我的問題。

+0

感謝您的信息。希望這是我需要的。但有一個問題,如果我有數百甚至數千用戶,這會不會創建大量的路由指令?如果是這樣會產生什麼問題? - 對不起,如果這是一個新手問題 – BPD 2011-04-18 22:29:08

+0

我也像兩週前開始CakePHP,所以我很難給出一些建議,但在我的線程沒有人知道更好的解決方案。這個更乾淨''Router :: connect('/ *',array('controller'=>'users','action'=>'view'));'但是你需要添加所有其他控制器的路由,所有的行動也。順便說一句,如果有人正確回答你的問題,它可以幫助你,這是好的,如果你設置這個問題解決。 – s7anley 2011-04-18 22:36:37

+0

再次抱歉作爲一個新手:我瞭解路由器的想法,你使用的foreach循環,它有一個規則爲每個用戶的網址和規則說 - 如果網址有/ john_smith然後發送到users ::視圖與john_smith作爲參數。接下來的評論 – BPD 2011-04-18 22:42:36

相關問題