ActiveForm yii2 при ошибке формы проверки

У меня есть представление:

<?= $form->field($registration, 'username',
            ['template' => '<div class="uk-form-row">
                                <label for="register_username">{label}</label>
                                {input}{error}
                                </div>'])
            ->textInput(['class' => 'md-input']) ?>

И я хочу, чтобы он добавил новый класс в textInput после возникновения ошибки. В модели есть несколько правил для этого входа:

['username', 'string', 'min' => 2, 'max' => 255, 'message' => 'Can not be blank'],
['username','required']

И, например, если я наберу 1 символ, это вызовет ошибку Can not be blank. Но также я хочу добавить класс md-input-danger на этот ввод. Есть ли правильный способ сделать это?


person Foreign Worker    schedule 11.04.2016    source источник


Ответы (2)


Вы должны применить некоторые параметры к своей форме:

$form = ActiveForm::begin([
    'layout' => 'horizontal',
    'fieldConfig' => [
        'horizontalCssClasses' => [
            'error' => 'md-input-danger'
        ],
    ],
]);
person aderushev    schedule 11.04.2016
comment
Он не добавляет и не изменяет входные классы. Это должно быть? Можете ли вы предоставить некоторую информацию о 'layout' => 'horizontal' - person Foreign Worker; 11.04.2016

если вы хотите использовать yii\web\ActiveField, посмотрите:

yii-widgets-activefield.html#$errorOptions-detail

Код должен быть таким:

$form = ActiveForm::begin([
    'fieldConfig' => [
        'errorOptions' => ['class' => 'md-input-danger']
    ],
]);

P.S. Код Hutsi использует yii\bootstrap\ActiveField

person Vladislav Filonov    schedule 11.04.2016
comment
Согласно документации, это изменит сгенерированный тег ошибки. Не ввод. Параметры по умолчанию для тегов ошибок. - person Foreign Worker; 11.04.2016
comment
Я этого не пробовал, но, может быть, вы можете изменить свойство «селекторы» в fieldConfig, чтобы оно указывало на ваш ввод? И тогда errorOptions будет менять напрямую класс ввода. - person Vladislav Filonov; 11.04.2016