2013-03-12 59 views
0

我正在做一個CakePHP的2.3應用程序,並擁有這些「頁」:如何在cakephp中路由用戶生成的路徑,例如mysite.com/username1?

mysite.com/demo 
mysite.com/admin 

以上是固定的。下面生成:

mysite.com/johnsmith 
mysite.com/cooluser88 

我已經更新了路線:

Router::connect(
'/*/', 
array('controller' => 'pages', 'action' => 'redirect') 

);

我在正確的軌道上嗎?頁面控制器中的重定向方法?我正在使用官方文檔,但我一直未能找到具體的例子。

我會繼續努力,如果找到答案,我會更新答案!

+0

不完全。路由器應該如何知道哪些是用戶名路由,哪些不是。你可以試着把這條規則放在最後。但我仍然建議在這裏使用更獨特的命名空間。 – mark 2013-03-12 11:27:51

+0

出於某種原因,我在重定向方法中拾取基本字符串'/ * /',並檢查它是否是固定的或用戶數據庫中的一個?是的,我正在考慮在固定路線之後把它放在最後。 – trafalgar 2013-03-12 11:45:33

回答

0

你最好打賭IMO是做一些像reddit的東西,其中每個子彈的前綴爲/r/

例子:

mysite.com/u/johnsmith 

然後,在你的路線,你可以做這樣的事情:

Router::connect('/u/:uname/*', array('controller'=>'users', 'action'=>'display'), 
    array('pass'=>array('uname'))); 

如果你真的不想這樣做,你可以使用這樣的:

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

但請記住,任何其他控制器,插件等等等等等將需要自己的路由,因爲它會認爲在mysite.com/uname之後通過了任何事情。不是最好的想法IMO。