我的用户控制器中有一个名为view
的方法,该方法应显示指定的(按URL)用户:
public function view($username = null) {
$this->User->username = $username;
if (!$this->User->exists()) {
throw new NotFoundException('Няма такъв потребител!');
}
if (!$username) {
$this->Session->setFlash('Няма такъв потребител!');
$this->redirect(array('action' => 'index'));
}
$this->set('user', $this->User->read());
}
在路线配置中:
Router::connect('/:username', array('controller' => 'users', 'action'=> 'view'), array('username' => '^([a-z0-9])+$'));
但是当我尝试:www.example.com/Username
时,它会返回致命错误:缺少控制器。
我也尝试了这个:
Router::connect('/users/:username', array('controller' => 'users', 'action'=> 'view'), array('pass' => array('username'), 'username' => '^([a-z0-9])+$'));
答案 0 :(得分:2)
不幸的是,对于使用/:username
的这种设置太简单了,它几乎会覆盖每一条其他路径。要有效地执行此操作(+正确的CakePHP方式),您需要设置自定义路由here is mine which pretty much achieves the same thing。在大多数情况下,只需将“产品”替换为“用户”,然后仔细阅读,以确保您了解正在发生的事情......
如果你仍然无法解决问题,请查看我的路线配置。
如果您想将 / user / dunhamzz 路由到个人资料,请将其设置为:
Router::connect('/user/:username',
array('controller' => 'users', 'action' => 'view'),
array('pass' => array('username')
);
然后您的视图操作只会将用户名作为第一个参数:
public function view($username) {
}