CakePHP Ajax Ошибка при входе в систему - PullRequest
0 голосов
/ 03 сентября 2011

Я сейчас работаю над AJAX-логином для моего приложения.В верхней части стартовой страницы есть ссылка для входа в систему, которая открывает диалог с формой входа при нажатии, но у меня есть несколько проблем:

  1. Когда пользователь ввел неправильные данные или данные отсутствуют, ошибки не отображаются
  2. Когда я нажимаю «Вход» и JsHelper обновляет «шаблон», а я снова нажимаю «Вход», он перенаправляет меня на http://www.url.com/users/login (что не должно происходить)
  3. Когда я ввожу правильные logindata, я вошел в систему, но перенаправление не выполняется или отображается сообщение.

Я думаю, что сейчас выложу весь необходимый код для анализа.

UsersController :: login ()

    public function login() {
        if($this->RequestHandler->isAjax()) {
            $this->layout = 'ajax';
            $this->render('/elements/users/login');
        }
        return $this->Auth->login();
    }

elements / ajax / login.ctp Это шаблон для диалогового окна входа в систему.

<?php echo $this->Session->flash(); ?>
<fieldset>
  <?php
    echo $this->Session->flash();
    echo $this->Form->create(
          'User', 
          array(
              'controller' => 'users', 
              'action' => 'login'
          )
      );
    echo $this->Form->input(
        'email',
        array(
            'label' => 'E-Mail',
            'style' => 'width: 270px;'
        )
    );
    echo $this->Form->input(
        'password',
        array(
            'style' => 'width: 270px;'
        )
    );
    echo $this->Js->submit(
        'Login', 
        array('url' => array(
            'controller' => 'users',
            'action' => 'login'
        ), 
        'update' => '#loginContainer')
    );
    echo $this->Form->end();
  ?>
</fieldset>

Я думаю, что это как-то связано с UsersController :: login (), но я не знаю, где искать.Так может ты сможешь мне помочь?Спасибо:)

1 Ответ

1 голос
/ 03 сентября 2011

Из книги в Auth :: login ():

Следует отметить, что вы должны вручную перенаправить пользователя после входа в систему, поскольку loginRedirect не вызывается. $ this-> Auth-> login ($ data) возвращает 1 при успешном входе в систему, 0 при ошибке

Так что-то примерно похоже на:

if ($this->Auth->login() === 1) {
    $this->redirect('/');
} else {
    $this->set('status', 'Bad login details');
}

* полностью не проверено

Связано с JavaScript, написанным для обработки этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...