Ответ 1
У вас есть два выхода из этой ситуации, и оба полагаются на валидаторы Callback
: (обратный вызов Symfony)
Либо добавьте boolean
с именем isUpdate
к объекту, который не будет сохранен, и сообщит валидатору, какая операция была предпринята. Этот метод полностью описан в ссылке выше.
Еще один способ решения этой проблемы - добавить валидатор обратного вызова в свой тип формы напрямую. Опять же, потребуется некоторый флаг isUpdate
, но на этот раз в формате Form (передать его через конструктор):
if ( $this->isUpdate == false ){
$builder->addValidator(new CallbackValidator(function(FormInterface $form){
if ( $form['image_file']->getData() == NULL ){
$form->addError(new FormError('You need to specify image file.'));
}
}));
}
Может быть, есть более простой способ добиться желаемой проверки, но я столкнулся с этими двумя месяцами назад.
Надеюсь, что это поможет...