0

我的用户控制器中有一个名为 的方法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])+$'));
4

1 回答 1

2

不幸的是,这种设置使用/:username太简单了,它几乎会覆盖所有其他路由。要有效地做到这一点(+ 正确的 CakePHP 方式),您需要设置一个自定义路由,这是我的,它几乎可以实现相同的目标。在大多数情况下,只需将“产品”替换为“用户”,通读一遍,以确保您了解发生了什么......

如果您仍然无法解决,请查看我的路线配置。

如果您想将/user/dunhamzz路由到配置文件,您可以这样设置:

Router::connect('/user/:username',
    array('controller' => 'users', 'action' => 'view'),
    array('pass' => array('username')
);

然后您的视图操作只需将用户名作为第一个参数:

public function view($username) {

}
于 2012-05-30T12:56:45.727 回答