0

これを整理しようとしていますが、どこにも行きません。モデルの属性として配列を取得しました。必要に応じて、配列内のいくつかのキーに対してカスタム検証を作成しようとしています。または、属性ラベルがどのように機能するかさえ理解できませんか? これが私のコードです:

モデル

 ...
 public $company = [
                    'name'                  => '',
                    'trading_name'          => '',
                    'type'                  => '',
                ];

 public function attributeLabels(){
    return [
            'company[name]' => 'Company Name',
    ];
 }   

 public function rules(){

    return [
             [['company[name]','company[trading_name'], 'safe'],
             [['company[name]'], 'return_check','skipOnEmpty'=> false],

    ];
 }  

 public function return_check($attribute, $params){

    $this->addError($attribute  ,'Required ');
    return false;
 }
 ...

配列全体を渡して、キーと値のバリデーターメソッドをチェックインしようとしましたが、カスタムバリデーターはトリガーされません。

4

2 に答える 2

1

会社用に別のモデルが必要だと思います。

于 2015-07-22T10:49:45.853 に答える
0

カスタム ルール関数を使用しましたが、すべて機能しました。returnreturn_check 関数の最後の句を削除してみてください。

これが私のために働いたものです:

class Essid extends ActiveRecord {
    public function rules() {
        return [
            ['network_name', 'checkNetworkName']
        ]
    }

    public function checkNetworkName($attribute, $params){
        if (!$this->hasErrors()) {
            if ( !ctype_alnum($this->network_name) )
                $this->addError($attribute, Yii::t('app', 'Not a valid Network Name'));
        }
    }
}

それが役に立てば幸い

于 2015-07-22T18:22:12.600 に答える