我試圖創建一個應用程序,它允許用戶創建一個帳戶,然後創建自己的頁面。Cakephp - 我想允許用戶創建自己的頁面,其網址將是他的名字
我想先和和姓氏使用用戶的組合作爲其網頁的網址,即mywebsite.com/john_smith
顯然,我需要與apropriate行動創建一個控制器,但我怎麼去使它具有我想要的網址?順便說一下,我已經通讀了一大堆手冊(所有關於路由esp的內容),並閱讀了大量的教程和一些書籍,但是我沒有遇到任何解釋這一點的內容。
任何幫助將不勝感激。
我試圖創建一個應用程序,它允許用戶創建一個帳戶,然後創建自己的頁面。Cakephp - 我想允許用戶創建自己的頁面,其網址將是他的名字
我想先和和姓氏使用用戶的組合作爲其網頁的網址,即mywebsite.com/john_smith
顯然,我需要與apropriate行動創建一個控制器,但我怎麼去使它具有我想要的網址?順便說一下,我已經通讀了一大堆手冊(所有關於路由esp的內容),並閱讀了大量的教程和一些書籍,但是我沒有遇到任何解釋這一點的內容。
任何幫助將不勝感激。
建議在用戶表中創建例如網址新列。
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']));
}
我處理了類似的問題,所以你可以檢查我的問題。
感謝您的信息。希望這是我需要的。但有一個問題,如果我有數百甚至數千用戶,這會不會創建大量的路由指令?如果是這樣會產生什麼問題? - 對不起,如果這是一個新手問題 – BPD 2011-04-18 22:29:08
我也像兩週前開始CakePHP,所以我很難給出一些建議,但在我的線程沒有人知道更好的解決方案。這個更乾淨''Router :: connect('/ *',array('controller'=>'users','action'=>'view'));'但是你需要添加所有其他控制器的路由,所有的行動也。順便說一句,如果有人正確回答你的問題,它可以幫助你,這是好的,如果你設置這個問題解決。 – s7anley 2011-04-18 22:36:37
再次抱歉作爲一個新手:我瞭解路由器的想法,你使用的foreach循環,它有一個規則爲每個用戶的網址和規則說 - 如果網址有/ john_smith然後發送到users ::視圖與john_smith作爲參數。接下來的評論 – BPD 2011-04-18 22:42:36