我有一個圖像字段是可選的。當你上傳圖片時,它會將文件名保存在數據庫中(通過教條使用事件)。如何使Symfony2窗體的可選字段保存爲空
問題是,當您編輯已經上傳的表單並且不添加圖像時,它會使圖像字段爲空。
有沒有辦法檢查/刪除字段值設置爲null,如果沒有圖像上傳?
實體,表單代碼如下:
class Product
{
/**
* @ORM\Column(type="string", nullable=true)
*
* @Assert\Image
*/
private $image;
}
形式
class ProductType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('image', FileType::class, [
'required' => !$options['update'],
]);
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$form = $event->getForm();
$product = $event->getData();
if (null == $form->get('image')->getData()) {
// $form->remove('image');
}
});
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Product'
));
}
public function getBlockPrefix()
{
return 'appbundle_product';
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setRequired([
'update',
]);
}
}
//在控制器
$editForm = $this->createForm(
'AppBundle\Form\ProductType',
$product,
[
'update' => true
]
);
非常感謝你。 –
爲了記錄:取代'組$ config-> getType->的getName()'(2.X)使用'get_class(組$ config->的getType() - > getInnerType())'在3.X –