Php 符号形式的多个对象
我正在尝试构建一个表单,请求您当前的工作和以前的工作,对象如下所示Php 符号形式的多个对象,php,forms,symfony,doctrine-orm,Php,Forms,Symfony,Doctrine Orm,我正在尝试构建一个表单,请求您当前的工作和以前的工作,对象如下所示 class Employment { private $id; private $employerName; private $jobTitle; //this is a relationship to the class below private $address; private $phone; } class Address { private $city;
class Employment {
private $id;
private $employerName;
private $jobTitle;
//this is a relationship to the class below
private $address;
private $phone;
}
class Address {
private $city;
private $state;
private $zip;
}
$builder = $this->createFormBuilder($employment);
$builder
->add('employerName', 'text')
->add(
$builder->create('address', 'form', array('by_reference' => ?))
->add('city', 'text')
->add('state', 'text')
)
地址位于就业对象内
我可以建立一个这样的形式
class Employment {
private $id;
private $employerName;
private $jobTitle;
//this is a relationship to the class below
private $address;
private $phone;
}
class Address {
private $city;
private $state;
private $zip;
}
$builder = $this->createFormBuilder($employment);
$builder
->add('employerName', 'text')
->add(
$builder->create('address', 'form', array('by_reference' => ?))
->add('city', 'text')
->add('state', 'text')
)
但这只能得到当前的雇主
问题:
我如何设置它以将相同对象的2个放入1个表单中?我不想创建另一个表单,我需要它处于相同的表单中。我曾考虑过创建一个家长,但我需要附加该原则,以使其发挥作用
有什么想法吗?根据您对一个表单的评论,我认为您可能对这个问题想得有点过头了。您只需要使用一个数组将两个就业对象传递给一个表单
$data = array(
'current' => new Employment(),
'previous' => new Employment(),
);
$builder = $this->createFormBuilder($data);
$builder
->add('current', new EmploymentFormType())
->add('previous', new EmploymentFormType())
;
答案假设您已经定义了适合重用的EmploymentFormType
根据您对一个表单的评论,我认为您可能对这个问题考虑过多了。您只需要使用一个数组将两个就业对象传递给一个表单
$data = array(
'current' => new Employment(),
'previous' => new Employment(),
);
$builder = $this->createFormBuilder($data);
$builder
->add('current', new EmploymentFormType())
->add('previous', new EmploymentFormType())
;
答案假设您已经定义了适合重用的EmploymentFormType
根据您对一个表单的评论,我认为您可能对这个问题考虑过多了。您只需要使用一个数组将两个就业对象传递给一个表单
$data = array(
'current' => new Employment(),
'previous' => new Employment(),
);
$builder = $this->createFormBuilder($data);
$builder
->add('current', new EmploymentFormType())
->add('previous', new EmploymentFormType())
;
答案假设您已经定义了适合重用的EmploymentFormType
根据您对一个表单的评论,我认为您可能对这个问题考虑过多了。您只需要使用一个数组将两个就业对象传递给一个表单
$data = array(
'current' => new Employment(),
'previous' => new Employment(),
);
$builder = $this->createFormBuilder($data);
$builder
->add('current', new EmploymentFormType())
->add('previous', new EmploymentFormType())
;
答案假设您已经定义了适合重用的EmploymentFormType
通过将数据放入这样一个新的FormType中解决了这个问题
class EmploymentFormType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('current', new CurrentEmploymentFormType(),array(
'data_class' => 'RLD\AppBundle\Entity\Employment'))
->add('previous', new PreviousEmploymentFormType(),array(
'data_class' => 'RLD\AppBundle\Entity\Employment'))
;
}
public function getName()
{
return 'employment';
}
}
这种情况与大多数情况不同,它更具动态性,您实际上是在重复表单。在这种情况下,调用相同的对象,但标签不同,因此可以接受两种类型。Cerad很接近他的答案,但由于某种原因,当我试图按照他的建议将其组合在一起时,我遇到了错误。当我遇到一个答案时,我找到了解决问题的办法。它仍然有点不对劲,但在Symfony错误的指导下稍微调整一下,我就能够让它工作了。使用这种格式,我可以像这样在控制器中构建
$form = $this->createForm(new EmploymentFormType());
return $this->render('RLDAppBundle:Default:test.html.twig', array(
'form' => $form->createView(),
));
希望这对其他人有所帮助,因为我没有意识到表单类型可以作为类型输入。你知道的越多 通过将数据放入这样一个新的FormType中解决了这个问题
class EmploymentFormType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('current', new CurrentEmploymentFormType(),array(
'data_class' => 'RLD\AppBundle\Entity\Employment'))
->add('previous', new PreviousEmploymentFormType(),array(
'data_class' => 'RLD\AppBundle\Entity\Employment'))
;
}
public function getName()
{
return 'employment';
}
}
这种情况与大多数情况不同,它更具动态性,您实际上是在重复表单。在这种情况下,调用相同的对象,但标签不同,因此可以接受两种类型。Cerad很接近他的答案,但由于某种原因,当我试图按照他的建议将其组合在一起时,我遇到了错误。当我遇到一个答案时,我找到了解决问题的办法。它仍然有点不对劲,但在Symfony错误的指导下稍微调整一下,我就能够让它工作了。使用这种格式,我可以像这样在控制器中构建
$form = $this->createForm(new EmploymentFormType());
return $this->render('RLDAppBundle:Default:test.html.twig', array(
'form' => $form->createView(),
));
希望这对其他人有所帮助,因为我没有意识到表单类型可以作为类型输入。你知道的越多 通过将数据放入这样一个新的FormType中解决了这个问题
class EmploymentFormType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('current', new CurrentEmploymentFormType(),array(
'data_class' => 'RLD\AppBundle\Entity\Employment'))
->add('previous', new PreviousEmploymentFormType(),array(
'data_class' => 'RLD\AppBundle\Entity\Employment'))
;
}
public function getName()
{
return 'employment';
}
}
这种情况与大多数情况不同,它更具动态性,您实际上是在重复表单。在这种情况下,调用相同的对象,但标签不同,因此可以接受两种类型。Cerad很接近他的答案,但由于某种原因,当我试图按照他的建议将其组合在一起时,我遇到了错误。当我遇到一个答案时,我找到了解决问题的办法。它仍然有点不对劲,但在Symfony错误的指导下稍微调整一下,我就能够让它工作了。使用这种格式,我可以像这样在控制器中构建
$form = $this->createForm(new EmploymentFormType());
return $this->render('RLDAppBundle:Default:test.html.twig', array(
'form' => $form->createView(),
));
希望这对其他人有所帮助,因为我没有意识到表单类型可以作为类型输入。你知道的越多 通过将数据放入这样一个新的FormType中解决了这个问题
class EmploymentFormType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('current', new CurrentEmploymentFormType(),array(
'data_class' => 'RLD\AppBundle\Entity\Employment'))
->add('previous', new PreviousEmploymentFormType(),array(
'data_class' => 'RLD\AppBundle\Entity\Employment'))
;
}
public function getName()
{
return 'employment';
}
}
这种情况与大多数情况不同,它更具动态性,您实际上是在重复表单。在这种情况下,调用相同的对象,但标签不同,因此可以接受两种类型。Cerad很接近他的答案,但由于某种原因,当我试图按照他的建议将其组合在一起时,我遇到了错误。当我遇到一个答案时,我找到了解决问题的办法。它仍然有点不对劲,但在Symfony错误的指导下稍微调整一下,我就能够让它工作了。使用这种格式,我可以像这样在控制器中构建
$form = $this->createForm(new EmploymentFormType());
return $this->render('RLDAppBundle:Default:test.html.twig', array(
'form' => $form->createView(),
));
希望这对其他人有所帮助,因为我没有意识到表单类型可以作为类型输入。你知道的越多 表单集合无法帮助您实现这一点?@ceadreak否,集合是指您在父项中有多个项,这是动态的。如果你看到一个明显的方式来利用这种情况下的集合,请让我知道。也许我解释得不够好。解释一下你所说的一种形式是什么意思?一个HTML表单?还是一张Symfony 2表格?如果晚一点,为什么?我不确定这是不是正确的方式。但是你可以在与地址实体相关的工作中创建两个字段,分别为address1和address2。@Cerad是后者,原因是形式简单,我从来都不相信为自己轻松地做一些事情。它总是关于用户体验。我认为唯一的方法是让一位家长参与进来。表单集合无法帮助您实现这一点?@ceadreak否,集合是指您在一位家长中有多个项目,这是动态的。如果你看到一个明显的方式来利用这种情况下的集合,请让我知道。也许我解释得不够好。解释一下你所说的一种形式是什么意思?一个HTML表单?还是一张Symfony 2表格?如果是后者,那么w