我有一组图像,我希望能够以 Symfony 4 形式添加/更新/删除这些图像。
为了为这些图像创建一个表单,我使用了一个带有 FileType 的自定义表单:
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('image', FileType::class, array(
'data_class' => null
))
;
}
Run Code Online (Sandbox Code Playgroud)
然后,我使用一个充满上述表单实例的 CollectionType 来为数组中的每个图像呈现一个表单,使用“allow_add”和“allow_delete”,这样我就可以通过 JavaScript 添加/删除行。
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('imagesets', CollectionType::class, array(
'entry_type' => ImageType::class,
'entry_options' => array('label' => false),
'allow_add' => true,
'allow_delete' => true
));
}
Run Code Online (Sandbox Code Playgroud)
这适用于添加新图像,但在更新现有图像时,不应需要 FileType 元素,只应为新行需要它。
问题:如何使现有图像不需要 FileType,但所有新行都需要?
(注意,我会将普通数组传递给这些表单对象,而不是 Doctrine 实体。)