2017-03-31 13 views
0

フォームにカスタムルールを追加しようとしています。私はモデルにカスタム関数を追加しましたが、それは私のためには機能しません。yii2モデルのカスタム検証

class BackendUser extends ActiveRecord implements IdentityInterface 
{ 
public function rules() 
{ 

    return [ 

     ['username','validateUsername','params'=>'username'=>'username']], 


    ]; 
} 

public function validateUsername($attribute, $params) 
{ 
    if (preg_match('/[^a-z])/i', $this->$attribute)) { 
     $this->addError($attribute, 'Username should only contain 
    alphabets'); 
    } 

}} 

答えて

0
あなたは(A => B => cは、多分それはタイプミスです)ここで使用すると、あなたがそれらを使用していないので、とにかくすべてのパラメータを渡す必要はありませんようには構築物が存在しないPHPで

バリデータメソッド簡易

public function rules() 
{ 
    return [ 
     ['username','validateUsername'], 
    ]; 
} 

で十分です。

+0

この機能も動作していません。 –

+0

何ですか?どうして?あなたはそれらを使用していません。 – Bizley

+0

私はインラインで機能しました。それは機能しています。 [ 'ユーザ名'、関数($属性は、$ paramsは) {}、 'skipOnError' => FALSE]、 –

0

コードにはいくつかのタイプミスがあります。動的属性で$this->{$attribute}を使用し、インライン検証を呼び出すときにparamsキーを配列にする必要があります。

class BackendUser extends ActiveRecord implements IdentityInterface 
{ 
public function rules() 
{ 

return [ 
    ['username','validateUsername','params'=>['username'=>'username']], 
]; 
} 

public function validateUsername($attribute, $params) 
{ 
if (preg_match('/[^a-z])/i', $this->{$attribute})) { 
    $this->addError($attribute, 'Username should only contain alphabets'); 
    } 
} 
} 
+0

あなたの返事のためにこんにちは。私はあなたのコードを試しました。動いていない。 –

関連する問題