我有一个允许我从表单中检索数据的功能:
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,但是我看不到在哪里可以指定它。
答案 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)