ArrayCollection代替Entity

时间:2019-03-11 07:24:45

标签: symfony twig

我有一个允许我从表单中检索数据的功能:

public function selectPlayers(Request $request): Response
{
    $form = $this->createFormBuilder()
        ->add('joueur', EntityType::class, [
            'class' => Joueur::class,         
            'choice_label' => 'prenom',
            'expanded' => 'true',
            'multiple' => 'true'
        ])
        ->getForm();

    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) {
        $joueurs = $form->getData('joueur');

        return $this->render('disputed/test.html.twig', [
            'joueurs' => $joueurs,
        ]);
    }

    return $this->render('disputed/new.html.twig', [
        'form' => $form->createView(),
    ]);
}

然后,我有一个想要显示此数据的视图:

<h1>Disputed index</h1>
    <table class="table">
        <thead>
            <tr>
                <th>Id</th>
                <th>Joueurs</th>
            </tr>
        </thead>
        <tbody>
        {% for joueur in joueurs %}
            <tr>
                <td>{{ joueur.id }}</td>
                <td>{{ joueur.nom }}</td>
            </tr>
        {% else %}
            <tr>
                <td colspan="4">no records found</td>
            </tr>
        {% endfor %}
        </tbody>
    </table>

但是我收到此错误消息:

  

属性“ id”和方法“ id()”之一均不可用,   “ getid()” /“ isid()” /“ hasid()”或“ __call()”存在并已公开   在类“ Doctrine \ Common \ Collections \ ArrayCollection”中进行访问。

我知道我得到了一个ArrayCollection而不是我的Entity,但是我看不到在哪里可以指定它。

2 个答案:

答案 0 :(得分:1)

您在这里有一个错误:

$joueurs = $form->getData('joueur');

您正在对整个表单执行getData,该操作会获取整个表单的数据。

方法getData不带任何参数,因此实际上已忽略了您传递的'joueur'值。因此,与您要做的一样:

$joueurs = $form->getData();

我想您尝试做的是:

$joueurs = $form->get('joueur')->getData();

答案 1 :(得分:0)

您将ArrayCollection发送到视图。 尝试循环显示您的视图(https://twig.symfony.com/doc/2.x/tags/for.html