2016-07-07 8 views
1

私のフィールドusernameは常に現在のユーザーのユーザー名で埋められています。そして、それは常に(提出の)私のInformationFormにユーザー名値を送信し、次のようなユニークでそれを検証:Yii2の現在のユーザーのユーザー名を除いて、 `User`テーブルの` username`を確認するには

[['username'], 'unique', 'targetAttribute' => 'username', 'targetClass' => '\common\models\User', 'message' => 'This username can not be taken.'], 

そしてそれは、このユーザ名はすでに使用されていることのことを言います。だから、私の値usernameをチェックしたいのですが、それは私のユーザー名ではありません。ただ>ボブ (それは私のユーザー名ですので、明らかに)私はSubmitをクリックし、このユーザ名が一意である場合、それはチェックshould't

そして - フィールドにビューで>ボブ マイ値username - それは のように、データベース内の私の現在のユーザー名ですそして、私の現在のデータベース内のユーザー名 - フィールドにビューで>ボブ と価値username - >ジョン と私はSubmitをクリックします - さを確認する必要があり、このユーザー名は、私は私ができる「カスタムバリデータ」について知っ

一意である場合InformationFormに自分の書かれた方法を使って自分のフィールドを検証してください。そして、私は自分の書かれた方法を私のInformationFormに使っている以外は、私がここに書いたすべてのことをする方法を見つけたいと思っています。

+0

この入力を取得するためだけに、インフォメーションモデルを作成しましたか?あなたはする必要がないからです。そして、それはおそらくあなたがこの問題に唯一のバリデーターで直面している理由です。 – Clyff

+0

@Clyff、私は自分のフィールドを検証するためのモデルInformationFormを作成し、それらを(もし新しいものであれば)データベースに入れます。 – Link

答えて

2

uniqueバリデータのwhenプロパティを使用できます。

やモデルで、あなたのルールは次のとおりです。http://www.yiiframework.com/doc-2.0/yii-validators-validator.html#$when-detail

グッドラックと楽しみを持っている:

[ 
    ['username'], 'unique', 
    'targetAttribute' => 'username', 
    'targetClass' => '\common\models\User', 
    'message' => 'This username can not be taken.', 
    'when' => function ($model) { 
     return $model->username != Yii::$app->user->identity->getUsername(); // or other function for get current username 
    } 
], 

あなたは、ドキュメントをyii2を参照することができます!

+0

私は次の '[[ 'ユーザー名'] 'ユニーク'、 'targetAttribute' => 'ユーザ名'、 'targetClass' =>持っている '\共通\モデル\ユーザー'、 'とき' => \t \t \t \t機能($モデル、$属性) \t \t \t \t { \t \t \t \t \t $ isNew =偽;\t \t \t \t \t if($ model-> $ attribute!= User :: find() - > where(['id' => Yii :: $ app-> user-> id]) - > one() - > $属性){ \t \t \t \t \t \t $ isNew = true; \t \t \t \t \t} \t \t \t \t \tリターン$ isNew。このユーザ名を取ることができない \t \t \t \t}、 \t \t \t \t 'メッセージ' =>」。']、 ' そして私はこのようなエラーがあります ' call_user_func()は、パラメータ1が有効なコールバックであることを期待しています。' uniqueExceptItSelf '関数が見つからないか、関数名が無効です ' – Link

+0

あなたのコードを使用しました。 My Yii2バージョンは2.0.9です – ThanhPV

関連する問題