#php #yii2 #yii2-model #yii2-validation
#php #yii2 #yii2-модель #yii2-проверка
Вопрос:
Я хочу сохранить модель задачи, но не могу сделать это без определения даты. У меня есть логический атрибут allDay
(флажок в поле зрения), и если он установлен в ИСТИННОМ формате даты, он должен быть d-m-Y
; иначе ‘d-m-Y H: m’. Как определить это условие в rules()
методе?
Следующий код не работает:
public function rules() {
return [
[['title', 'user_id'], 'required'],
[['description'], 'string'],
[['start', 'end'], 'date',
'format' => $this->allDay ? 'php:d-m-Y' : 'php:d-m-Y H:i'],
];
}
Ответ №1:
Для этого вы можете использовать встроенный валидатор или задать условие в правилах. Для условия сделайте это:
[['start', 'end'], 'date', 'format' => 'php:d-m-Y', 'when' => function ($model) {
return $model->allDay;
}],
[['start', 'end'], 'date', 'format' => 'php:d-m-Y H:i', 'when' => function ($model) {
return !$model->allDay;
}],