Cakephp не перенаправляет на правильный URL, оставляя параметр URL пустым - PullRequest
0 голосов
/ 14 февраля 2012

Я пытаюсь настроить вид для моего вошедшего в систему пользователя.Я поднял код из руководства по 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, входит в систему, торт не переходит в / 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));
}

1 Ответ

1 голос
/ 14 февраля 2012

Страница Cake открывается после успешного входа в систему - это либо страница, которую неаутентифицированный пользователь пытался открыть изначально, либо действие, заданное в свойстве loginRedirect компонента Auth в контроллере (приложения). Также задокументировано здесь . Другими словами, приведенный выше код не имеет ничего общего с поведением, которое вы описываете / запрашиваете.

В этом случае, поскольку user_id доступен только после успешного входа в систему (и, следовательно, не может быть установлен в loginRedirect), вам нужно будет вместо этого настроить действие входа в свой UsersController, чтобы оно стало чем-то похожим из:

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