2012-10-08 34 views

Respuesta

24

Puede configurar sus validaciones modelo de la siguiente manera

public function rules() 
{ 
    // NOTE: you should only define rules for those attributes that 
    // will receive user inputs. 
    return array(
      //First parameter is your field name of table which has email value 
     array('email', 'email','message'=>"The email isn't correct"), 
     array('email', 'unique','message'=>'Email already exists!'),    
    ); 
} 

Yii Reference Enlace Para más detalle: http://www.yiiframework.com/wiki/56/

6

Usted puede crear su método de validación personalizada para satisfacer sus necesidades.

Crear una función en la clase del modelo:

public function uniqueEmail($attribute, $params) 
{ 
    // Set $emailExist variable true or false by using your custom query on checking in database table if email exist or not. 
    // You can user $this->{$attribute} to get attribute value. 

    $emailExist = true; 

    if($emailExist) 
    $this->addError('email','Email already exists'); 
} 

usuario de este método de validación de reglas:

array('email', 'uniqueEmail','message'=>'Email already exists!'),  
3

podrá encontrar fácilmente ya sea correo electrónico ya está presente en su base de datos o no mediante la definición de la regla .

Aquí está la regla.

array('xxx', 'unique', 'className' => 'SomeClass', 'attributeName' => 'SomeAttribute'), 

Ejemplo.

public function rules() { 
    return array(
    ... 
    array('email', 'unique', 'className' => 'User', 'attributeName' => 'email', 'message'=>'This Email is already in use'), 
    ... 
); 
} 

Aquí quiero poner la validación de correo electrónico, que es único, mi modelo de nombre de la clase es usuario, attributeName es el nombre del campo de la tabla es decir, el correo electrónico y si el correo electrónico ya está presente en la tabla a continuación, mostrar el mensaje.

Si da error, entonces puede cambiar su tabla y hacer único el campo de correo electrónico.

ALTER TABLE ADD usuario (e-mail)

A continuación, compruebe.

otras validaciones de correo electrónico se encuentran a continuación. que creo que es un conjunto completo de validación de correo electrónico.

public function rules() { 
    return array(
    ... 
    array('email', 'required'), 
    array('email', 'length', 'max'=>200), 
    array('email', 'email', 'message'=>'Email is not valid'), 
    array('email', 'unique', 'className' => 'User', 'attributeName' => 'email', 'message'=>'This Email is already in use'), 
    ... 
); } 

Eso es todo. Gracias

4

validación personalizada, código corto y dulce. probar esto está funcionando bien -

public function rules() 
    { 
     return array(
      array('email, first_name, last_name, password, repeat_password', 'required'), 
      array('email', 'email','message'=>"The email isn't correct"), 
      array('email', 'uniqueEmail'), 
     ); 
    } 

escribir esta función personalizada en mismo modelo -

public function uniqueEmail($attribute, $params) 
    { 
     if($user = User::model()->exists('email=:email',array('email'=>$this->email))) 
      $this->addError($attribute, 'Email already exists!'); 
    } 
4

Para Yii2 he utilizado la siguiente en un modelo denominado Registro que utilizará la clase de usuario.

public function rules() 
{ 
    return [ 

     ['Email', 'filter', 'filter' => 'trim'], 
     ['Email', 'required'], 
     ['Email', 'email'], 
     ['Email', 'unique', 'targetClass' => '\common\models\User', 'message' => 'This email address has already been taken.'], 

    ]; 
} 

Es necesario utilizar targetClass y poner el espacio de nombre para el usuario Clase

0

Siga las pocas modificaciones como a continuación: Siga su archivo según su módulo que ha utilizado.

Ir a modelos -> abrir-> Users.php -> Modificar la línea como se menciona a continuación.

public function rules() 
    { 
     return [ 
       [['User_Email'], 'unique'], 
       [['User_Mobile'],'unique'], 
       ]; 
    } 

Ahora Ir a Vistas-> usuarios -> Abrir _form.php-> escribir el código como se menciona más adelante

<div class="users-form"> 

    <?php $form = ActiveForm::begin([ 
      'id' => $model->formName(), 
      'enableAjaxValidation' => true, 
     ]); ?> 

<?= $form->field($model, 'User_Email')->textInput(['maxlength' => true])?> 
<?= $form->field($model, 'User_Mobile')->textInput(['maxlength' => true])?> 
    <div class="form-group"> 
      <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> 
     </div> 

     <?php ActiveForm::end(); ?> 

    </div> 

Ahora Ir a Controlador -> abrir UsersController.php -> wirte el código como se menciona a continuación

public function actionCreate() 
    { 
     if(Yii::$app->request->isAjax && $model->load(Yii::$app->request->post())){ 
      Yii :: $app->response->format = 'json'; 
      return \yii\bootstrap\ActiveForm::validate($model); 
      } 
} 

Gracias

Cuestiones relacionadas