ArrayCollection вместо Entity - PullRequest
       17

ArrayCollection вместо Entity

0 голосов
/ 11 марта 2019

У меня есть функция, которая позволяет извлекать данные из формы:

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, но не вижу, гдеЯ могу указать это.

Ответы [ 2 ]

1 голос
/ 11 марта 2019

У вас есть ошибка здесь:

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

Вы делаете getData для всей формы, которая извлекает данные всей формы.

Метод getData не принимает никаких аргументов, поэтому переданное вами значение 'joueur' фактически игнорируется. Так же, как и вы:

$joueurs = $form->getData();

Я думаю, что вы пытались сделать:

$joueurs = $form->get('joueur')->getData();
0 голосов
/ 11 марта 2019

Вы отправляете коллекцию ArrayCollection вашему представлению. Попробуйте зациклить на своем представлении (https://twig.symfony.com/doc/2.x/tags/for.html)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...