ActiveForm yii2 验证表单错误

Posted

技术标签:

【中文标题】ActiveForm yii2 验证表单错误【英文标题】:ActiveForm yii2 on validation form error 【发布时间】:2016-04-11 14:39:23 【问题描述】:

我有一个看法:

<?= $form->field($registration, 'username',
            ['template' => '<div class="uk-form-row">
                                <label for="register_username">label</label>
                                inputerror
                                </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。有没有合适的方法来做到这一点?

【问题讨论】:

【参考方案1】:

您应该将一些选项应用于您的表单:

$form = ActiveForm::begin([
    'layout' => 'horizontal',
    'fieldConfig' => [
        'horizontalCssClasses' => [
            'error' => 'md-input-danger'
        ],
    ],
]);

【讨论】:

它不会添加或更改输入类。它应该吗?你能提供一些关于'layout' =&gt; 'horizontal'的信息吗?【参考方案2】:

如果你想使用 yii\web\ActiveField 看看:

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

代码应该是这样的:

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

附: Hutsi 的代码使用 yii\bootstrap\ActiveField

【讨论】:

根据文档,这将更改生成的错误标签。不是输入。 "错误标签的默认选项。" 我没有尝试过,但也许您可以更改 fieldConfig 的“选择器”属性以指向您的输入?然后errorOptions会直接改变输入类。

以上是关于ActiveForm yii2 验证表单错误的主要内容,如果未能解决你的问题,请参考以下文章

PHP面试题精讲—从Yii2源码ActiveForm看如何安全处理表单验证

PHP面试题精讲—从Yii2源码ActiveForm看如何安全处理表单验证

yii2 创建ActiveForm(表单)

yii2.0 Activeform表单部分组件使用方法

yii2.0 Activeform表单部分组件使用方法

yii2.0 Activeform表单部分组件使用方法