我正在尝试在Symfony的表单中添加一个复选框。 该复选框的目的是最终删除上传的图像(如果选中)。 所以它只在上传文件时显示。我还希望它在表单实体持久化之前取消上传。 但我还没有,那个应该这样做的代码目前已被注释掉了。 此复选框对应于File类中的布尔属性,以便允许在控制器中访问其值。一开始该属性不存在,因此我无法从实体或表单/ getData访问此值。
我的问题是让我的formtype中的字段与持久性混淆。 从表格中获得的所有财产均被认为是无效的。即使选择了文件,也使用uniqid等重命名。当时间到来时,字段被认为是空的。从表单中删除DeleteFile解决了这个问题。我尝试使用property mapped = false设置它,但没有用。
以下是表单中的代码:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('file', 'file', array(
'label' => false
))
->add('deleteFile','checkbox', array(
'label' => 'Delete File',
'attr' => array('class' => 'delete_file'),
'mapped' => false,
))
;
}
感谢您的投入。如果一个更好的解决方案可以让我不必处理我感兴趣的这个问题,我也对这个“界面”的替代解决方案持开放态度。