Url routing Cakephp未路由到正确的url,使url参数为空

Url routing Cakephp未路由到正确的url,使url参数为空,url-routing,cakephp-2.0,Url Routing,Cakephp 2.0,我正在尝试为我的登录用户设置一个视图。我从CakePHP2.0手册中提取了代码。这是控制器代码: public function view($id = null) { $this->User->id = $id; if (!$this->User->exists()) { throw new NotFoundException(__('Invalid user')); } $this->set('user', $t

我正在尝试为我的登录用户设置一个视图。我从CakePHP2.0手册中提取了代码。这是控制器代码:

public function view($id = null) {

    $this->User->id = $id;
    if (!$this->User->exists()) {
        throw new NotFoundException(__('Invalid user'));
    }

    $this->set('user', $this->User->read(null, $id));
}
当用户id为1的用户登录时,cake不会转到/users/1。而是转到/users/view。以下是与用户控制器相关的路由:

Router::connect('/users', array('controller' => 'users', 'action' => 'login'));
Router::connect('/users/:action', array('controller' => 'users'));
Router::connect('/users/:id', array('controller' => 'users', 'action' => 'view'));
我不确定是我弄错了,路线代码还是控制器代码

更新新控制器功能:

public function view($id = null) {

    $this->User->id = $id;
    if (!$this->User->exists()) :
        throw new NotFoundException(__('Invalid user'));

    elseif($this->Auth->login()) :
return $this->redirect(array('controller' => 'users', 'action' => 'view', AuthComponent::user('id')));

    endif;
    $this->set('user', $this->User->read(null, $id));
}

成功登录后打开的页面蛋糕要么是未经身份验证的用户最初试图打开的页面,要么是(App)控制器中Auth组件的
LoginDirect
属性中设置的操作。同样。换句话说,上述代码与您描述/请求的行为无关

在这种情况下,由于用户id仅在成功登录后可用(因此无法在
loginDirect
中设置),因此您需要在UsersController中调整登录操作,以使其符合以下内容:

if ($this->Auth->login()) {
    return $this->redirect(array('controller' => 'users', 'action' => 'view', AuthComponent::user('id'));
}

我明白你的意思,所以我拿出了关于抛出异常的代码,并使用了这个。它以/users/view/18的身份登录,chrome给了我一个重定向循环错误。我是否应该有一个重定向命令,直接返回到它所在的控制器操作?将为OP添加新功能。不,你误读了我的答案。代码应该放在登录操作中,而不是查看操作中。对不起,derp derp片刻!好的,这将成功登录,没有循环错误,但是它仍然路由到/users/view/18。我不明白如何告诉cake去/users/18。我真的很感谢你的帮助;因为我实际上是一个编程高手,所以你给了我一些cakephp手册中只让我不清楚的东西。@Heather会改变你想让它去的URL,简单地将重定向位替换为准确的URL语法,比如:
return$this->redirect('/users/'.AuthComponent::user('id')。确保你有一个路由a可以处理这样的请求,但据我所知,从你上面发布的路由,这应该可以正常工作。