Validation yii2唯一验证(非ajax)不起作用
我看到一些链接说Yii2唯一验证仅用于Ajax验证(但我找不到任何最佳实践可遵循)。因此,我要求在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
['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)。。