yii2 表單非同步驗證欄位唯一性
阿新 • • 發佈:2018-12-09
在開發中,遇到非同步驗證資料唯一性的問題,在models中定義
public function rules()
{
return [
['name', 'unique'],
['appid', 'unique']
];
}
新增的時候能夠驗證通過,但是更新資料的時候,就會出現驗證不通過。這是因為在頁面表單驗證中,沒有帶當前資料的id,可以做如下的更改
//驗證表單方法 public function actionValidate() { Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; $param = Yii::$app->request->post(); if (isset($param['Product']['id'])) $model = Product::findOne(['id' => $param['Product']['id']]); else $model = new Product(); $model->load($param); return \yii\widgets\ActiveForm::validate($model); }
在更新頁面中,加入當前資料的id。
<?= $form->field($model, 'id')->hiddenInput()->label(false) ?>