【问题标题】:Yii2 conditional validation on radio boxYii2 对单选框进行条件验证
【发布时间】:2016-10-22 07:11:48
【问题描述】:

我正在尝试对属性account_no 使用条件验证。只有当我在属性account_version 中选择值“旧”时,它才应该被验证。但它不起作用。我得到的错误是newalso 需要验证。我应该改用 javascript 来验证吗

我在模型中的代码

return [
        ['account_no', 'required', 'when' => function($model) {
            return $model->account_version == 'Old';
        }], 
      ]

表单中的代码

<?php if ($model->isNewRecord) {?> 
    <div class="row">
        <div class="col-md-2">
            <label for="">Account Version</label>
        </div>
        <div class="col-md-2">
            <?php  echo $form->field($model, 'account_version')->radioList(['New'=>'New','Old'=>'Old'])->label(false); ?>
        </div>

        <div id="action_block" class="col-md-6">
            <div class="col-md-3">
                <label for="">Account No:</label>
            </div>
            <div class="col-md-3">
                <?= $form->field($model, 'account_no')->textInput(['maxlength' => true])->label(false) ?>
            </div>
        </div>
    </div>
<?php } ?>

【问题讨论】:

    标签: validation yii yii2 conditional


    【解决方案1】:

    型号

    [['account_no'], 'required', 'when' => function ($model) { return $model->account_version == 'Old'; }, 'whenClient' => "function (attribute, value) { return $('#modelName[account_version]').val() == 'Old'; }"],
    

    表格

    <?php $form = ActiveForm::begin(['id' => 'account-form', 'enableAjaxValidation' => true]); ?>
    

    控制器

    if($model->load(Yii::$app->request->post())) {
        if (Yii::$app->request->isAjax) {
            Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
            return yii\widgets\ActiveForm::validate($model);
        }
    }
    

    【讨论】:

      【解决方案2】:
      <?php
      return [
      
      
              ['account_no', 'required', 'when' => function ($model) {
                  return $model->account_no == 'Old';
              }, 'whenClient' => "function (attribute, value) {
                  return $('#account_no').val() == 'Old';
              }"]
            ]
      
      
      ?>
      

      http://www.yiiframework.com/doc-2.0/guide-input-validation.html [参考链接]

      【讨论】:

      • 我补充说,但仍然不能作为 yii2 验证。似乎在单选框上对 yii2 进行条件验证存在问题。 Refer this
      • @gojiraki。 Yii 2.0.7 解决了问题,最新版本在条件验证方面没有任何问题。使用 Ajax 工作正常。
      • @InsaneSkull 我认为它适用于文本输入,但使用单选框我仍然遇到问题。你能告诉我它是怎么做的吗?
      • @gojiraki。使用 Ajax 验证也适用于单选按钮。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-10
      • 2012-08-29
      • 2016-07-16
      • 1970-01-01
      • 2017-01-06
      • 2017-01-29
      • 1970-01-01
      相关资源
      最近更新 更多