1

私はYiiフォームacceptfirst nameとユーザーlast nameから持っていemailます。リンクを使用するadd moreと、ユーザーはこれら 3 つの要素の複数の行を追加できます。

電子メールの検証については、モデル ルールで設定されてuniqueおりrequired、すべて正常に動作します。add moreリンクをクリックすると追加行を作成するために JavaScript を使用しています。

問題

最初の行の値はJohn, Newman, johnnewman@gmail.comで、2 番目の行は と入力してMathew, Heyden, johnnewman@gmail.comいます。この場合、メールアドレスが重複しています。検証ルール (requireおよびunique) のいずれも、これを検証できません。これを検証するためのより良い方法を提案できますか?

更新: カスタム検証関数を作成しましたが、これで問題を解決するのに十分だと思います。カスタム検証関数でform data/全体にアクセスする方法を教えてもらえますか?post data

public function uniqueOnForm($attribute){ 
            // This post data is not working
            error_log($_REQUEST, true);
            $this->addError($attribute, 'Sorry, email address shouldn\'t be repeated');
        }
4

3 に答える 3

1

これを試すことができます:

<?php
public function rules()
{
    return array(
        array('first_name', 'checkUser')
    );
}

public function checkUser($attribute)
{
    if($this->first_name == $this->other_first_name){
         $this->addError($attribute, 'Please select another first name');
    }
}
?>

この拡張機能を調べることもできます

于 2015-09-10T07:56:33.770 に答える