Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms Symfony2 2x表单中的多对一缺少表单数据_Forms_Symfony_Doctrine Orm_Many To Many - Fatal编程技术网

Forms Symfony2 2x表单中的多对一缺少表单数据

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[

我使用的是原则2x一对多链接表,如

我的条令关系似乎能够正确地获取数据,事实证明vars.data.myCollectionName具有值

{{ 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>