【发布时间】:2022-01-09 01:32:10
【问题描述】:
我正在使用 Symfony 5 做一个应用程序,但有一个问题我无法找到解决方案,我不知道。
我想制作一个实体“人”的形式。 一个人可以在他的家庭中添加其他人。
因此,在我的实体中,我对 Person 进行了多对多自引用。
class Person
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=50)
*/
private $name;
/**
* @ORM\Column(type="string", length=50)
*/
private $firstname;
/**
* @ORM\Column(type="string", length=255)
*/
private $birthdaydate;
/**
* @ORM\Column(type="string", length=255)
*/
private $gender;
/**
* @ManyToMany(targetEntity="Person")
* @JoinTable(name="family",
* joinColumns={@JoinColumn(name="person__id", referencedColumnName="person__id")},
* inverseJoinColumns={@JoinColumn(name="family_id", referencedColumnName="person__id")}
* )
*/
private $myFamily;
现在,我想制作一个表单,在其中我可以在一个人中添加新的人。 我做了一个 CollectionType,就像 symfony 说的那样,但是当我想将它打印到页面时,由于无限循环,我得到了超时。
这是导致问题的“allow_add”。
我需要“allow_add”返回的原型变量在前面添加新字段。
class PersonType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('name', TextType::class, ['attr' => ['class' => 'form_textfield']])
->add('firstname')
->add('birthdayDate', TextType::class, ['attr' => ['class' => 'form_datetime']])
->add('gender', GenderType::class)
->add('submit', SubmitType::class)
->add('myFamily', CollectionType::class, array('entry_type' => PersonType::class, 'mapped' => false, 'allow_add' => true, 'by_reference' => false, 'allow_delete' => true));
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Person::class,
]);
}
}
这是我的表格,但没什么有趣的,我会在解决这个问题时添加必要的js。
{% extends 'base.html.twig' %}
{% block title %}Hello PersonController!
{% endblock %}
{% block body %}
{{ form_start(form) }}
{{ form_row(form.name) }}
{{ form_row(form.firstname) }}
{{ form_row(form.birthdayDate) }}
{{ form_row(form.gender) }}
{{ form_row(form.myFamily) }}
<button type="button" class="add_item_link" data-collection-holder-class="tags">Add a tag</but
{{ form_end(form) }}
{% endblock %}
提前感谢大家。
【问题讨论】:
标签: php forms symfony doctrine