Javascript 验证错误yii2

Javascript 验证错误yii2,javascript,php,yii2,Javascript,Php,Yii2,我遇到了这个问题,我将模型中的字段设置为唯一。以下是我的模型: [['user_id'], 'unique'], [['country_id'], 'unique'], 在我的控制器里 if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); }

我遇到了这个问题,我将模型中的字段设置为唯一。以下是我的模型:

[['user_id'], 'unique'],
[['country_id'], 'unique'],
在我的控制器里

if ($model->load(Yii::$app->request->post()) && $model->save()) {
    return $this->redirect(['view', 'id' => $model->id]);
}
将显示唯一的验证器。但当我将控制器更改为:

if ($model->load(Yii::$app->request->post())) {
    $model->country_id = 3;
    $model->save();
}
我的应用程序没有显示验证器。相反,它说它节省

这是yii2的错误,或者我做错了什么


谢谢。

如果对修改后的模型进行验证时出错,$model->save()应返回false
因此,您可以检查此条件以显示正确的消息表单(或正确管理此情况)


$error
将从模型返回错误

在第二种情况下,如果
$model->save()
返回
false
,您将怎么做?我想在下面显示一个验证字段。就像必需的验证一样。感谢您将
$model->save()
更改为
if($model->save(){返回$this->重定向(['view',id'=>$model->id]))
并保持其他不变是的,这是我唯一做的事情。我不知道是否有其他方法可以实现唯一验证,即使修改控制器的保存。感谢您的时间这与
唯一验证
无关。这是关于你的程序逻辑。调用
$model->save()
时,将运行
$model->validate()
。如果验证失败,
$model->save()
将返回
false
。但是你的代码无法处理这种情况。谢谢。但我已经试过了。当验证消息存在时,我想在该字段下显示它。如果您正在操作(这部分代码)…则表示您已经将数据发送到服务器,并且不再以客户端形式发送。。在这种情况下,您只能渲染用户发送的模型,并且您已经使用正确的错误消息进行了修改,例如重新渲染模型
  if ($model->load(Yii::$app->request->post())) {
  $model->country_id = 3;
  if (!$model->save()){
      return $this->render('yoru_message_form');
    }
  }
if ($model->load(Yii::$app->request->post())) {
   $model->country_id = 3;
   if($model->validate() == true){
      $model->save();
   }
   else{
      $error = $model->getErrors();
   }
}