我正在尝试为我登录的用户设置视图。我从cakephp 2.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));
}
当user_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));
}
答案 0 :(得分:1)
成功登录后,页面打开的页面是未经身份验证的用户最初尝试打开的页面或(App)控制器中Auth组件的loginRedirect
属性中设置的操作。同样documented here。换句话说,上面的代码与您描述/请求的行为无关。
在这种情况下,由于user_id仅在成功登录后可用(因此无法在loginRedirect
中设置),因此您需要在UsersController中调整登录操作,以便成为以下几行:
if ($this->Auth->login()) {
return $this->redirect(array('controller' => 'users', 'action' => 'view', AuthComponent::user('id'));
}