我得到了这段代码。 当我去 domain.com / 时,它将路由到home-> index()。当我输入 domain.com/username ..它将路由到用户 - >视图(用户名)
file:config / routes.php
$controllerList = App::objects('Controller');
foreach($controllerList as $controller)
{
$controllerName = str_replace('Controller', '', $controller);
if($controllerName != "App" & $controllerName != "Pages")
{
Router::connect('/' . $controllerName . '/:action/*', array('controller' => $controllerName));
$firstLetterLower = strtolower(substr($controllerName,0,1));
$lowerCaseName = $firstLetterLower . substr($controllerName,1);
Router::connect('/' . $lowerCaseName . '/:action/*', array('controller' => $lowerCaseName));
}
}
Router::connect('/:username', array('controller' => 'users', 'action' => 'views'), array('pass' => array('username')));
Router::connect('/', array('controller' => 'home', 'action' => 'index'));
问题是我无法在不执行操作的情况下路由我的控制器domain.com/controller。
这样可以: domain.com/blog/index , domain.com/forum/index , domain.com/users/login
这不起作用: domain.com/blog 它将被视为用户名
答案 0 :(得分:0)
排除控制器名称在用户名路由中匹配。您应该有一个列表,以防止人们注册这些名称。
答案 1 :(得分:0)
把你这样的代码。这不会将博客视为用户名
Router::connect('/', array('controller' => 'home', 'action' => 'index'));
Router::connect('/blog', array('controller' => 'blog', 'action' => 'index'));
Router::connect('/:username', array('controller' => 'users', 'action' => 'views'), array('pass' => array('username')));
谢谢..!