Forms Symfony2 2x表单中的多对一缺少表单数据
我使用的是原则2x一对多链接表,如 我的条令关系似乎能够正确地获取数据,事实证明vars.data.myCollectionName具有值Forms Symfony2 2x表单中的多对一缺少表单数据,forms,symfony,doctrine-orm,many-to-many,Forms,Symfony,Doctrine Orm,Many To Many,我使用的是原则2x一对多链接表,如 我的条令关系似乎能够正确地获取数据,事实证明vars.data.myCollectionName具有值 {{ ladybug_dump( bandVacancyAssociation.bandVacancy.vars.data.genres) }} 然而,当我试图访问表单字段子项以使用form_row twig函数时,我的数据总是一个空数组 {{ ladybug_dump(edit_form.bandVacancyAssociations.children[
{{ ladybug_dump( bandVacancyAssociation.bandVacancy.vars.data.genres) }}
然而,当我试图访问表单字段子项以使用form_row twig函数时,我的数据总是一个空数组
{{ ladybug_dump(edit_form.bandVacancyAssociations.children[0].children)}}
因为我有自己的价值观,我可以对symfony表单结构进行反向工程,但我更愿意使用内置的表单小部件使其工作,任何帮助都将不胜感激
这是相关代码
乐队
带型
波段空缺
带型
乐队空缺协会
BandvacankyasociationType
结果发现我遗漏了一件事:
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('bandVacancy', new BandVacancyType())
;
}
现在,我可以循环使用表单中的值
<div class="panel">Band Vacancies
{% for bandVacancyAssociation in edit_form.bandVacancyAssociations %}
{#{{ dump(bandVacancyAssociation.vars.data.id) }}#}
<div class="panel-group" id="accordion">
<div class="panel panel-default" id="panel{{ bandVacancyAssociation.vars.data.id }}">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-target="#collapse{{ bandVacancyAssociation.vars.data.id }}"
href="#collapse{{ bandVacancyAssociation.vars.data.id }}">
{{ bandVacancyAssociation.vars.data.bandVacancy.name}}
</a>
</h4>
</div>
<div id="collapse{{ bandVacancyAssociation.vars.data.id }}" class="panel-collapse collapse in">
<div class="panel-body">
{{ form_label(bandVacancyAssociation.bandVacancy.name) }}
{{ form_widget(bandVacancyAssociation.bandVacancy.name) }}
{{ form_label(bandVacancyAssociation.bandVacancy.comment) }}
{{ form_widget(bandVacancyAssociation.bandVacancy.comment) }}
{% for genre in bandVacancyAssociation.bandVacancy.genres %}
{{ form_label(genre) }}{{ form_widget(genre) }}
{% endfor %}
{% for instrument in bandVacancyAssociation.bandVacancy.instruments %}
{{ form_label(instrument) }}{{ form_widget(instrument) }}
{% endfor %}
</div>
</div>
</div>
</div>
{% endfor %}
</div>
多亏了否决这个问题的人
/**
* @ORM\OneToMany(targetEntity="BandVacancyAssociation", mappedBy="bandVacancy",fetch="EAGER")
*/
private $bandVacancyAssociations;
/**
* @ORM\ManyToMany(targetEntity="Genre", inversedBy="bandVacancies",fetch="EAGER")
* @ORM\JoinTable(name="bandvacancy_genre",
* joinColumns={@ORM\JoinColumn(name="bandvacancy_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="genre_id", referencedColumnName="id")}
* )
*/
protected $genres;
/**
* @ORM\ManyToMany(targetEntity="Instrument", inversedBy="bandVacancies",fetch="EAGER")
* @ORM\JoinTable(name="bandvacancy_instrument",
* joinColumns={@ORM\JoinColumn(name="bandvacancy_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="instrument_id", referencedColumnName="id")}
* )
*/
protected $instruments;
$builder->add('genres', 'entity', array(
'multiple' => true,
'expanded' => true,
'class' => 'ZE\BABundle\Entity\Genre',
'property' => 'name',
))
->add('instruments', 'entity', array(
'multiple' => true,
'expanded' => true,
'class' => 'ZE\BABundle\Entity\Instrument',
'property' => 'name',
));
/**
* @ORM\ManyToOne(targetEntity="BandVacancy", inversedBy="bandVacancyAssociations",fetch="EAGER")
*/
private $bandVacancy;
$builder
->add('bandVacancy', 'entity', array( 'class' => 'ZE\BABundle\Entity\BandVacancy'))
;
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('bandVacancy', new BandVacancyType())
;
}
<div class="panel">Band Vacancies
{% for bandVacancyAssociation in edit_form.bandVacancyAssociations %}
{#{{ dump(bandVacancyAssociation.vars.data.id) }}#}
<div class="panel-group" id="accordion">
<div class="panel panel-default" id="panel{{ bandVacancyAssociation.vars.data.id }}">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-target="#collapse{{ bandVacancyAssociation.vars.data.id }}"
href="#collapse{{ bandVacancyAssociation.vars.data.id }}">
{{ bandVacancyAssociation.vars.data.bandVacancy.name}}
</a>
</h4>
</div>
<div id="collapse{{ bandVacancyAssociation.vars.data.id }}" class="panel-collapse collapse in">
<div class="panel-body">
{{ form_label(bandVacancyAssociation.bandVacancy.name) }}
{{ form_widget(bandVacancyAssociation.bandVacancy.name) }}
{{ form_label(bandVacancyAssociation.bandVacancy.comment) }}
{{ form_widget(bandVacancyAssociation.bandVacancy.comment) }}
{% for genre in bandVacancyAssociation.bandVacancy.genres %}
{{ form_label(genre) }}{{ form_widget(genre) }}
{% endfor %}
{% for instrument in bandVacancyAssociation.bandVacancy.instruments %}
{{ form_label(instrument) }}{{ form_widget(instrument) }}
{% endfor %}
</div>
</div>
</div>
</div>
{% endfor %}
</div>