Yii2 ActiveForm:在表单顶部或在errorSummary()中显示Ajax验证响应

问题描述 投票:0回答:1

我使用的是ActiveForm,我需要显示验证错误,而不是在输入字段附近,而是在表单顶部。

如下面的示例代码所示,设置errorOptions避免在默认位置显示错误消息。

[Ajax验证正在工作,但$form->errorSummary($model)并未显示任何消息,即使here看起来应该如此,在documentation中我也找不到清晰的答案。

此外,添加Html::error($model, 'username')不利于Ajax验证。

<?php
    $form = ActiveForm::begin([
        'id' => 'test-form',
        'options' => ['class' => 'form-horizontal'],
        'enableAjaxValidation' => true,
        'enableClientValidation' => true,
    ]) 
?>

<?= $form->errorSummary($model) ?>
<?= Html::error($model, 'username') ?>

<div class="form-row"> 
    <div class="form-group col-md-3">
        <?= $form->field($model, 'username', ['errorOptions' => ['tag' => false]])->textInput()->label("Username") ?>
    </div>
</div>

<?php ActiveForm::end() ?>

在Yii1.1中,可以以更灵活的方式显示验证错误,因为您可以分别定义labelinputerror。像这样的东西:

<?php echo $form->labelEx($model,'username'); ?>
<?php echo $form->textField($model,'username'); ?>
<?php echo $form->error($model,'username'); ?>

在这种情况下,您可以简单地将$form->error($model,'username');移动到表单内的任何位置。

如何使用Yii2而不使用Javascript API来获得相同的结果?

  • 在表单顶部显示单个输入的Ajax验证错误。
  • errorSummary()显示Ajax验证错误
ajax forms validation yii2
1个回答
0
投票

我确实测试了$form->errorSummary();,但确实显示了所需的输出,但是形式为:

请修复以下错误:

  • 请输入用户名。
  • 就像一个选项,您可以这样操作:

    <?php $form = ActiveForm::begin([
          'id' => 'test-form',
          'options' => ['class' => 'form-horizontal'],
          'enableAjaxValidation' => true,
          'enableClientValidation' => true,
    ]); ?>
    <div class="form-group col-md-3">
          <div class="error-block text-center">
              <?php
                  $error = $form->field($model, 'username');
                  $error->template = '{error}';
                  echo $error;
              ?>
          </div>
          <?php
              $username = $form->field($model, 'username');
              $username->template = "{input}";
              echo $username->textInput(['autofocus' => true]);
          ?>
    </div>
    <?php ActiveForm::end() ?>
    

    输出将在表单字段的正上方,是带有以下内容的响应:

    请输入用户名

    © www.soinside.com 2019 - 2024. All rights reserved.