2013-03-12 63 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。