1. 程式人生 > >yii2 表單非同步驗證欄位唯一性

yii2 表單非同步驗證欄位唯一性

在開發中,遇到非同步驗證資料唯一性的問題,在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) ?>