16

Yii モデル検証ルール関数コードを使用して電子メールを検証する方法。また、Yii のモデル検証ルール機能を使用してメールの有無を確認する方法も紹介します。

4

6 に答える 6

25

以下のようにモデルの検証を設定できます

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 参照リンク: http://www.yiiframework.com/wiki/56/

于 2012-10-08T09:01:56.983 に答える
6

要件を満たすカスタム検証メソッドを作成できます。

モデル クラスに関数を作成します。

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');
}

ルールでこの検証方法を使用します。

array('email', 'uniqueEmail','message'=>'Email already exists!'),    
于 2012-10-08T09:52:32.713 に答える
4

カスタム検証、短くて甘いコード。これを試してみてください。正常に動作しています-

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'),
        );  
    }

このカスタム関数を同じモデルに記述します -

public function uniqueEmail($attribute, $params){
        if($user = User::model()->exists('email=:email',array('email'=>$this->email)))
          $this->addError($attribute, 'Email already exists!');
    }
于 2014-07-17T11:23:16.950 に答える
0

以下のいくつかの変更に従ってください: 使用したモジュールに従って、ファイルに従ってください。

models -> open -> Users.php -> 以下のように行を変更します。

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

ビューに移動 -> ユーザー -> _form.php を開く -> 以下のようにコードを記述します。

<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>

次に、Controller->open UsersController.phpに移動します->以下に示すようにコードを記述します

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);
            }
}

ありがとうございました

于 2016-10-18T12:30:17.940 に答える