[英]Symfony2 Embedded forms How to assign values of certain form fields to child form field
我有实体用户和实体公司。
关系是公司(一个)与用户(许多)的关系。
当我注册成为公司时,我需要同时创建这两个对象。
这两个对象具有相同的属性: $ phone,$ firstName,$ lastName; (对于公司而言,这些字段表示主要联系人)。
我的注册表格包括2种表格:用户表格和嵌入式公司表格。
问题 :现在,当我渲染注册表单时,我有重复的字段:为每个对象渲染的phone,firstName,lastName。
有没有办法以某种方式组合它们,并只向用户请求一次这些值,但仍将它们保存到两个实体的数据库中?
我设法在PRE_SUBMIT事件上使用事件侦听器解决了此问题:
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
/**
* Class CompanyRegFormType
* @package AppBundle\Form
*/
class UserFormType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('firstName', 'text')
->add('lastName', 'text')
->add('phone', 'text')
->add('company', new CompanyFormType())
->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event){
$data = $event->getData();
$data['company']['phone'] = $data['phone'];
$data['company']['firstName'] = $data['firstName'];
$data['company']['lastName'] = $data['lastName'];
$event->setData($data);
}
);
}
/**
* @return string
*/
public function getName()
{
return 'app_user_registration';
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => 'AppBundle\Entity\User',
]);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.