从嵌套表单中调用 $builder->getData() 总是返回 NULL [英] Calling $builder->getData() from within a nested form always returns NULL
本文介绍了从嵌套表单中调用 $builder->getData() 总是返回 NULL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图获取以嵌套形式存储的数据,但是在调用 $builder->getData()
时,我总是得到 NULL.
I'm trying to get data stored in a nested form but when calling $builder->getData()
I'm always getting NULL.
有谁知道应该如何获取嵌套表单中的数据?
Does anyone knows what how one should get the data inside a nested form?
这是 ParentFormType.php:
Here's the ParentFormType.php:
class ParentFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('files', 'collection', array(
'type' => new FileType(),
'allow_add' => true,
'allow_delete' => true,
'prototype' => true,
'by_reference' => false
);
}
}
文件类型.php
class FileType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
// Each one of bellow calls returns NULL
print_r($builder->getData());
print_r($builder->getForm()->getData());
die();
$builder->add('file', 'file', array(
'required' => false,
'file_path' => 'file',
'label' => 'Select a file to be uploaded',
'constraints' => array(
new File(array(
'maxSize' => '1024k',
))
))
);
}
public function setDefaultOptions( \Symfony\Component\OptionsResolver\OptionsResolverInterface $resolver )
{
return $resolver->setDefaults( array() );
}
public function getName()
{
return 'FileType';
}
}
谢谢!
推荐答案
需要使用 FormEvents::POST_SET_DATA 来获取表单对象:
You need to use the FormEvents::POST_SET_DATA to get the form object :
$builder->addEventListener(FormEvents::POST_SET_DATA, function ($event) {
$builder = $event->getForm(); // The FormBuilder
$entity = $event->getData(); // The Form Object
// Do whatever you want here!
});
这篇关于从嵌套表单中调用 $builder->getData() 总是返回 NULL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文