【发布时间】:2014-06-07 23:21:02
【问题描述】:
如何从两种表单类型创建自定义表单类型。我想创建 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 侦听器。
【问题讨论】: