Форма входа в макет YII - PullRequest
       4

Форма входа в макет YII

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

Yii Noob здесь.

Я сделал выпадающую форму авторизации, которая отображается как частичная. Он отлично работает, когда учетные данные пользователя верны, и перенаправляет туда, куда я хочу. Однако, если проверка формы или проверка подлинности не удалась, я не могу получить сообщения об ошибках, которые будут переданы в форму входа. Я думаю, проблема в том, что моя форма входа в систему находится в основном макете (потому что я хочу, чтобы она была доступна в любой момент), и что контроллер не может передать переменные в макет чистым способом.

Итак, вот мое действие по входу в SiteController

public function actionLogin ()
        {                       
                $form = new LoginForm;
                if (isset($_POST['LoginForm']))
                {
                        $form->attributes=$_POST['LoginForm'];

                        //validate user input and redirect to user panel if valid
                        if($form->validate() && $form ->login())
                        {
                                $success = "oui";
                                $this->render('user_panel');    
                        } 
                        else
                        {                                               
                                $success = $form->getError('login').$form->getError('password');                                                        
                                $this->render('index',array('success'=>$success));
                                //here I can pass the error messages to the index view for example, but not to the login form in the main layout, how can I do this?
                        }                                                                                                       
                }                       
        }

Кроме того, в форме входа я установил для enableAjaxValidation значение true, как это работает? Могу ли я сказать контроллеру, чтобы он также отвечал через Ajax прямо на форму?

Последний вопрос: форма должна отображать $ form-> errorSummary ($ model) и модель, являющаяся новой LoginForm. Почему он никогда не отображает сводку ошибок?

Спасибо за внимание

1 Ответ

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

Это:

$success = $form->getError('login').$form->getError('password');                                                        
$this->render('index',array('success'=>$success));

Должно быть:

$this->render('login',array('model'=>$model));

Форма должна содержать несколько строк, например

<?php echo $form->error($model,'field'); ?>

или

<?php echo $form->errorSummary($model); ?>

Эти строки будут получать ошибки от валидатора и отображать их, поэтому вам не нужно ничего передавать при возникновении ошибки.

И наконец, для лучшей практики ваше соглашение об именовании приводит к ошибкам в анализеваша переменная для ошибок на самом деле называется $ success.

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