Yii2 ActiveForm唯一验证未显示错误消息
这是我的模型联系人Yii2 ActiveForm唯一验证未显示错误消息,yii2,Yii2,这是我的模型联系人 public function rules() { return [ [['fname', 'status','mobile',], 'required'], [['user_id', 'contact_type','group_type','passport_no','trip_id','group_id','state',], 'integer'], [['fname', 'mname', 'lname', 'sta
public function rules()
{
return [
[['fname', 'status','mobile',], 'required'],
[['user_id', 'contact_type','group_type','passport_no','trip_id','group_id','state',], 'integer'],
[['fname', 'mname', 'lname', 'status', 'street', 'location', 'post', 'city', 'district','email','job_title','company_name','source'], 'string', 'max' => 500],
[['department'], 'string', 'max' => 40],
[['pincode'], 'string', 'max' => 15],
[['mobile'],'unique'],
此处所需的mobile
验证工作并显示错误消息,但unique规则工作但不显示任何错误消息
请帮帮我。也许您还应该设置
targetClass
:
['email', 'unique', 'targetClass' => '\common\models\User']
1) 唯一的数据库验证工作。2) 表单提交后,检查验证,由于唯一验证失败,模型未保存。
3) 如果您想在表单上进行唯一的验证,请使用Ajax 为此,您需要设置
'enableAjaxValidation'=>true
$form = ActiveForm::begin([
'id' => 'contact-form',
'enableAjaxValidation' => true,
]);
控制器:
if (Yii::$app->request->isAjax && $model->load(Yii::$app->request->post()))
{
Yii::$app->response->format = Response::FORMAT_JSON;
return ActiveForm::validate($model);
}
我假设您的查看页面为
register.php
。所以
register.php(视图)
1) 删除使用yii\bootstrap\ActiveForm代码>(如果存在)
2) 添加使用yii\widgets\ActiveForm代码>
3) 在该字段中添加'enableAjaxValidation'=>true
(验证它的位置,如下所示)
型号
[['mobile'],'unique','message'=>'Mobile No Already Exist'],
供参考-单击我的模型中的此规则适用于我:
['email', 'required'],
['email', 'email'],
['email', 'unique', 'targetClass' => '\app\models\Student', 'message' => 'This email address has already been taken.'],
你能显示你正在使用的表单吗?请正确设置代码格式。使用4个空格缩进或``引号
[['mobile'],'unique','message'=>'Mobile No Already Exist'],
if ($model->validate()) {
//SAVE YOUR DATA
} else {
// HERE YOU CAN PRINT THE ERRORS OF MODEL
$data = $model->getErrors();
Yii::$app->session->setFlash('message', $data['password'][0]);// its dislplays error msg on your form
}
['email', 'required'],
['email', 'email'],
['email', 'unique', 'targetClass' => '\app\models\Student', 'message' => 'This email address has already been taken.'],