在提交 Yii2 以外的按钮上禁用 ActiveForm 客户端验证

Disable ActiveForm Clientside Validation on button other than submit Yii2

  1. 我有一个上传 excel 到数据库的表格。

  2. 它有 1 个 File 输入和 2 个按钮 'Upload' 和 'Delete All '.

问题场景:

我不想在 'Delete All' 上进行客户端活动表单验证,因为此处不需要文件。

代码:

<?php $form = ActiveForm::begin([ 'enableClientValidation' => false, 
            'options' =>['action' => Url::toRoute('/site/halltickets')
                        ,'method' => 'POST'
                        , 'enctype'=>'multipart/form-data']]); ?>

<?= $form->field($model, 'file')
    ->fileInput()->label("Upload Only Excel File [Allowed Formats: xlsx, xls]") ?>
<center>
    <?= Html::submitButton('Upload &raquo;', ['class' => 'btn btn-warning']) ?>
    <?= Html::a('Delete All &raquo;',
        Url::toRoute(['site/delete-halltickets']),
        ['class' => 'btn btn-danger',
            'data-confirm' => Yii::t('yii', 'Delete all Hall Ticket Allocations?'),
        ]);?>
</center>
<?php ActiveForm::end(); ?>

为了更好理解,下图。

在上传表单上放置 "Delete All" 按钮不是个好主意。在窗体外插入此按钮。会更加人性化。

此外,您可以从模型中删除 "required" 验证器。或者仅为特定的 scenarios.

定义它