Yii框架:规则是设置唯一的,在修改用户资料时该怎么保证除了自己的存在于数据库之外的数据的唯一性。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yii框架:规则是设置唯一的,在修改用户资料时该怎么保证除了自己的存在于数据库之外的数据的唯一性。相关的知识,希望对你有一定的参考价值。

如后台的会员管理,里面有电话号码、手机号码、身份证号码,这三个在模型规则中都是唯一的,编辑会员资料时,我只改其中一个电话号码,然后手机号码和身份证号码就会提示已存在,而我想要的是不更改的资料不需要验证,编辑时怎么做到除了自己本身存在数据库的资料外检测数据的唯一性。求解答,谢谢。

你是不是用$model = new Model();???
添加数据是new Model
但修改数据是将数据查询出来
$model = Model::find().....
然后保存就没问题了

我猜你是new 一个model 然后save() 这样是添加数据
参考技术A

yii 框架 自定义规则客户端验证

前提:yii 自定义规则不能通过失去焦点验证

view层中:设置form的3个属性,validationUrl 可以不设置,默认为当前页面,但是一般情况验证不会跟提交数据在一个方法中处理

$form = zActiveForm::begin([
      ‘id‘=> ‘validate‘,
      ‘enableAjaxValidation‘=> true,
      ‘validationUrl‘ => \yii\helpers\Url::toRoute(‘/hotel/hotel-room/validate-form‘)]);

model层中写验证规则,判断验证条件

public function rules(){
    [[‘OUTSIDE_ORDER_NO‘], ‘noRepeat‘, ‘on‘ => ‘csBook‘, ‘skipOnError‘ => true, ‘skipOnEmpty‘ => true]
}

public function noRepeat($attr){
    //$this -> $attr    该字段需要满足的条件
}

controller中加载数据验证:

public function actionValidateForm(){
  Yii::$app->response->format=\yii\web\Response::FORMART_JSON; // 相应数据格式处理
  $model = new Person();
  $model->load(Yii::$app->request->post);
  return   \yii\widgets\ActiveForm::validate($model);
}

以上。。




以上是关于Yii框架:规则是设置唯一的,在修改用户资料时该怎么保证除了自己的存在于数据库之外的数据的唯一性。的主要内容,如果未能解决你的问题,请参考以下文章

yii 框架 自定义规则客户端验证

Yii2.0 rules常用验证规则

Yii2框架bootstrap样式理解

yii2 rules验证规则,ajax验证手机号码是否唯一

yii框架rules规则

Yii2学习笔记:汉化yii,设置表单的描述(属性标签attributeLabels)