Рассмотрим меня Somthing как это:Yii2: Правила валидации для всего объекта модели вместо отдельных атрибутов?
class Dummy extends yii\base\Model {
public $a;
public $b;
public function rules() {
return [ ??? ];
}
}
Как я мог бы создать правило проверки с учетом как атрибуты $ а и $ Ь в то же время? Представьте себе, что либо $ a, либо $ b или оба должны иметь значение. Если ни один из них не установлен, я хочу получить одну ошибку проверки, например «Либо a, либо b должен быть установлен». Я думаю, что when property здесь не помогает (я мог бы создать условия для каждого атрибута, проверив другое свойство соответственно, но это создаст две ошибки проверки).
Приведенный выше пример является простым. Но это может быть намного сложнее и зависит от других вещей.
С Model::addError() нужен атрибут, кажется, я не могу этого добиться. Ошибки зависят от атрибута. Так как еще я могу проверить весь объект и, например, выяснить, можно ли сохранить объект модели с его текущими значениями. Существует ли какая-либо проверка, которая находится поверх проверки атрибута? Валидация более высокого уровня?
Спасибо, но это не то, что я ожидал. Это вызывает 3 ошибки, поскольку правило выполняется для каждого атрибута. – robsch
Да Я сделал это нарочно: пользователь увидит три выделенных поля и будет знать, какие поля мы подразумеваем в сообщении об ошибке. Вы можете оставить только одну, если хотите, но все три будут проверены: '' ' public function rules() { { [ [['a',], 'myCustomRule'], [['b' , 'c'], 'string'], // или любой другой ]; } '' ' –