ajax валидация от одного поля ошибка в другом ...

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
caHek2x
Сообщения: 1240
Зарегистрирован: 2016.04.12, 20:41

ajax валидация от одного поля ошибка в другом ...

Сообщение caHek2x »

уже гдето видел тему подобную но не помню чем дело закончилось ...
вот такая ситуация:
есть правила:

Код: Выделить всё

public function rules()
{
    return [
        [['login', 'password'], 'trim'],

        [['login', 'password'], 'required', 'message' => "Введите данные"],
        ['login', 'validateLogin'],
        ['password', 'validatePassword'],
    ];
}

public function validateLogin($attribute, $params)
{
    if (!$this->hasErrors()) {
        $user = $this->getUser();
        if (!$user) {
            $this->addError('login', 'Не найден пользователь с таким логином');
        }
    }
}

public function validatePassword($attribute, $params)
{
    if (!$this->hasErrors()) {
        $user = $this->getUser();
        if ($user) {
            if (!Yii::$app->getSecurity()->validatePassword($this->password, $user->password)) {
                $this->addError('password', 'Не верный пароль');
            }
        }
    }
}
теперь форма:

Код: Выделить всё

<?php $form = ActiveForm::begin(
    [
        'enableAjaxValidation' => true
    ]
); ?>
<?= $form->field($model, 'login')->textInput() ?>
<?= $form->field($model, 'password')->passwordInput() ?>
<?= Html::submitButton('Войти', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?>
<?php ActiveForm::end(); ?>
и так теперь суть:
вводим в поле login чтото ... идет запрос ajax который возвращает что мол введите данные (required)
вводим пароль ... идет запрос ajax который возвращает
{"_userloginform-login":["Не найден пользователь с таким логином"]}
но т.к. фокус в поле пароль ошибка под полем login не высветится пока мы не нажмем Войти или не клацнем в поле и уберем фокус.
в стандартных средствах нет такого "показывай ошибки везде где видишь" ... или только в ручную обрабатывать по событию ... ?

upd: да можно разбить правила по порядку .. .сначала required login потом валидация существования а потом по порядку пароль ...но бывают и другие ситуации когда от выбранного radioBtn надо чтото важным сделать и тд ... так что вопрос именно не как правила переписать под данную ситуацию а как AF заставить показывать пришедшие ошибки все
Ответить