使用表单类型的表单类型来处理symfony表单上的ImageUploading

时间:2014-04-23 08:37:09

标签: php forms symfony types

如何从两种表单类型创建自定义表单类型。我想在其中创建具有两种表单类型的ImageFileType,一种用于处理图像文件,另一种用于检查,用户在编辑操作时更改图像。

这个隐藏字段是因为当用户去编辑实体并且只是编辑其他表单字段而不编辑imageFiletype时这个表单将空文件发送到服务器而我需要隐藏表单字段才能知道用户是否更改了实体图像

我将两种表单类型添加到此新表单类型(PromotImageformtype)中,并希望获取第二个字段的值并将其发送回我的主表单类型。

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('ImageChangeFlag', 'hidden', array('data' => false))
            ->add('image', 'imagefile', array('label' => 'لوگو راهکار',
                                                      'required' => false,
                                                      'image_path' => $options['image_path'])
                                                      'image_thumb_path' => $options['image_thumb_path']),
                                                      'entity' => $options['entity']),
                                                      'thumbs_info' => $options['thumbs_info'])
                                                    ));

        //add event listener to calls validator
        $ImageChangeFlag_listener = new ImageChangeFlagListener($options);
        $builder->addEventListener(FormEvents::PRE_BIND, array($ImageChangeFlag_listener, "PreBindValidatorImage"));

        $builder->addEventListener(FormEvents::POST_BIND, array($ImageChangeFlag_listener, "PostBindValidatorImage"));
    }

我怎么能这样做,在这种情况下PRE_BIND和POST_BIND如何完成他们的工作我有两种表单类型的形式我的父表单类型有PRE_BIND而且我的子表单类型也有PRE_BIND和POST_BIND监听器。

2 个答案:

答案 0 :(得分:0)

请查看此文档以了解如何保存和更新上传的文件

How to handle File Uploads with Doctrine

How to Embed a Collection of Forms

答案 1 :(得分:0)

检查添加不同表单类型的Genemu bundle,例如文件上传和图片上传

demo here

我灵感创造了自己的