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