试图解决这个问题但却无处可去。我有一个数组作为模型的属性,我试图根据需要为数组中的一些键创建自定义验证。或者甚至无法弄清楚属性标签的工作方式?这是我的代码:
MODEL
...
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;
}
...
我甚至尝试传递整个数组并检查验证器方法中的键和值,但自定义验证器甚至没有被触发。
答案 0 :(得分:1)
我认为你需要为公司分离模型。
答案 1 :(得分:0)
我使用过自定义规则功能,但它们都有效。尝试删除return_check函数末尾的return
子句。
以下是对我有用的东西:
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'));
}
}
}
希望有所帮助