Symfony 4 formbuilder зацикливает каждую строку таблицы базы данных - PullRequest
0 голосов
/ 01 июня 2019

У меня есть 2 объекта:

  • Recettes
  • Категория

Я пытаюсь построить / перечислить форму на основе каждой строки таблицы «Recettes» и отобразить ее из контроллера.

Есть идеи?

=======================

FORM_START

Name1 (TypeText) | Категория (ChoiceType)

Name2 (TypeText) | Категория (ChoiceType)

Name3 (TypeText) | Категория (ChoiceType)

[Кнопка отправки]

FORM_END

=======================

Сущность RECETTES

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Recettes
 *
 * @ORM\Table(name="recettes", indexes={@ORM\Index(name="categorie", columns={"categorie"})})
 * @ORM\Entity
 */
class Recettes
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="nom", type="string", length=50, nullable=false)
     */
    private $nom;

    /**
     * @var \Categories
     *
     * @ORM\ManyToOne(targetEntity="Categories")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="categorie", referencedColumnName="id")
     * })
     */
    private $categorie;

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getNom(): ?string
    {
        return $this->nom;
    }

    public function setNom(string $nom): self
    {
        $this->nom = $nom;

        return $this;
    }

    public function getCategorie(): ?Categories
    {
        return $this->categorie;
    }

    public function setCategorie(?Categories $categorie): self
    {
        $this->categorie = $categorie;

        return $this;
    }
}

Сущность КАТЕГОРИИ

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Categories
 *
 * @ORM\Table(name="categories")
 * @ORM\Entity
 */
class Categories
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="nom", type="string", length=50, nullable=false)
     */
    private $nom;

    public function getId(): ?int
    {
        return $this->id;
    }

    public function getNom(): ?string
    {
        return $this->nom;
    }

    public function setNom(string $nom): self
    {
        $this->nom = $nom;

        return $this;
    }
}

1 Ответ

0 голосов
/ 12 июня 2019

В symfony/forms каждая форма представляет собой EventDispatcherInterface.

Вы можете подписаться на одно из событий, которое запускается вашей формой ?

В вашем случае вы хотите добавить поля до обработки вашей формы.

class FriendMessageFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
            $builder->add('activate_recette_1', ChoiceType::class);
            $builder->add('activate_recette_2', ChoiceType::class);
        });
    }
}

Вы можете ввести свой RecetteRepository через Dependency-Injection и использовать результаты.

Прослушивание событий формы через:

...