Validation yii2唯一验证(非ajax)不起作用

Validation yii2唯一验证(非ajax)不起作用,validation,yii2,unique,Validation,Yii2,Unique,我看到一些链接说Yii2唯一验证仅用于Ajax验证(但我找不到任何最佳实践可遵循)。因此,我要求在Yii2中进行非Ajax验证 我的模型规则是 ['name', 'unique', 'targetAttribute' => 'function_id','message' => 'name must be unique.'], 我的控制器功能是正常的actionCreate() 有人能解决这个问题吗?提前谢谢 编辑:用于Ajax 好的,我知道了,我的控制器代码现在是 $mod

我看到一些链接说Yii2唯一验证仅用于Ajax验证(但我找不到任何最佳实践可遵循)。因此,我要求在Yii2中进行非Ajax验证

我的模型规则是

['name', 'unique', 'targetAttribute' => 'function_id','message' => 'name must be unique.'],
我的控制器功能是正常的actionCreate()

有人能解决这个问题吗?提前谢谢

编辑:用于Ajax
好的,我知道了,我的控制器代码现在是

    $model = new JobFunctionRole();
    $model->scenario = 'insert';

    $jobFunction=JobFunction::find()->all();
    if(Yii::$app->request->post()){
        if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())) {
            Yii::$app->response->format = Response::FORMAT_JSON;
            return ActiveForm::validate($model);
        }
        if ($model->save()) {
            return $this->redirect(['view', 'id' => $model->job_function_role_id]);
        }
    } else {
        return $this->render('create', [
            'model' => $model,'jobFunction'=>$jobFunction
        ]);
    }`

但页面重定向并显示空白页面。

可能是您必须同时检查这两个页面

 ['a1', 'unique', 'targetAttribute' => ['a1', 'a2']]


[
     'name', 'unique', 
     'targetAttribute' => ['name','function_id'],
      'message' => 'name must be unique.'
],

可能是你必须同时检查这两个

 ['a1', 'unique', 'targetAttribute' => ['a1', 'a2']]


[
     'name', 'unique', 
     'targetAttribute' => ['name','function_id'],
      'message' => 'name must be unique.'
],

在Ajax验证中执行。我会指导你。好的。我做了,我的控制器代码现在是:见我问题中的编辑。谢谢!:)从概念上讲,您以何种方式使用函数_id检查唯一性?@scaisEdge根据函数id,名称是唯一的。即,[function_id=>2,name=>xxx]不应输入同名的相同函数id xxx。顺便说一句,这里的函数_id不是主键,它的函数表的引用键那么您的意思是名称和函数id必须是唯一的?在Ajax验证中执行。我会指导你。好的。我做了,我的控制器代码现在是:见我问题中的编辑。谢谢!:)从概念上讲,您以何种方式使用函数_id检查唯一性?@scaisEdge根据函数id,名称是唯一的。即,[function_id=>2,name=>xxx]不应输入同名的相同函数id xxx。顺便说一句,这里的函数_id不是主键,它的函数表参考键那么您的意思是名称和函数id必须是唯一的吗?谢谢!!工作正常。但是为什么它不适用于非ajax操作呢?在。。。验证?或者在提交后进行验证)?查看控制器代码。。如果($model->save())失败,可能会发生这种情况……然后尝试使用$model->save(false)进行调试(无论如何,这会保存模型,然后条件变为true。)谢谢!!工作正常。但是为什么它不适用于非ajax操作??在验证期间?或者在提交验证之后)?查看控制器代码。。如果($model->save())失败,则可能会发生这种情况…然后尝试使用$model->save(false)进行调试(无论如何都要保存模型,然后条件变为true)。。