При попытке разобраться в этом, но никуда не с ним. У меня есть массив как атрибут для модели, и я пытаюсь создать специальную проверку для некоторых из ключей в массиве, как требуется. Или даже не можете понять, как будут работать метки атрибутов? Вот мой код:Пользовательские правила и проверки Yii2 для атрибута, который является массивом
МОДЕЛЬ
...
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;
}
...
Я даже пытался передать весь массив и проверить в методе валидатора для ключей и значений, но пользовательский валидатор даже не запускается.
Да, если я создаю различные модели, а затем с помощью ActiveForms генерировать форму, это может сделать проверку, но моя проблема в том, что я хочу для пропуска ActiveRecords. Есть ли другой путь? А для простых атрибутов (а не массивов) все же пользовательский валидатор не запускается. Я что-то упускаю? –
Затем создайте собственное правило для переменной $ company и manualy, чтобы проверить все элементы. – Konstantin
@ThinkDifferent Вам не нужно позволять вашей модели наследовать от ActiveRecord, просто используйте 'yii \ base \ Model'. Он легкий, но позволяет делать все виды валидации. Yii поощряет объектно-ориентированное программирование на основе классов; если вы попытаетесь работать против этого, у вас будет плохое время. – tarleb