【问题标题】:Yii2 required validation on updateYii2 更新时需要验证
【发布时间】:2015-06-17 08:39:36
【问题描述】:

我有 Yii2 表单,其中包含取决于页面操作的表单字段。前任。当操作为create 时,很少出现字段,而当操作为update 时,很少出现字段。我想根据这种情况添加所需的验证。

例如

<?= $form->field($model, 'unique_identifier')->textInput(['maxlength' => 45]) ?>

我仅在 action =&gt; 'update' 时显示此字段。

现在我想为此添加所需的验证,我尝试了这个:

[['unique_identifier'], 'required', 'on' => 'update'],

但上述验证不起作用。如果我删除 on=&gt;update,那么它会在创建和更新场景中进行验证。

任何帮助将不胜感激。

【问题讨论】:

  • afaik 这应该没问题...我会为这个问题加注星标,我很好奇...

标签: php validation yii2


【解决方案1】:

ActiveRecord 在您更新或创建项目时不会自动设置场景。您必须在模型中覆盖 update() 方法并设置您需要的场景。例如。在你的情况下

public function update($runValidation = true, $attributeNames = null)
{
    $this->scenario = 'update';
    return parent::update($runValidation, $attributeNames);
}

您也可以在actionUpdate 中设置场景

public function actionUpdate($id)
{
    $model = $this->findModel($id);
    $model->scenario = 'update';
    //load data from request, save model etc.
 }

【讨论】:

    猜你喜欢
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 2017-07-25
    相关资源
    最近更新 更多