【问题标题】:Symfony 4 formbuilder loop each rows from database tableSymfony 4 formbuilder循环数据库表中的每一行
【发布时间】:2019-06-01 11:03:47
【问题描述】:

我有 2 个实体:

  • 背带
  • 类别

我尝试根据“Recettes”表的每一行构建/列出一个表单并从控制器显示它。

有什么想法吗?

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

FORM_START

名称1(类型文本)|类别(ChoiceType)

名称2 (TypeText) |类别(ChoiceType)

名称3 (TypeText) |类别(ChoiceType)

[提交按钮]

FORM_END

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

实体接收

<?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;
    }
}

【问题讨论】:

    标签: arrays forms loops symfony entity


    【解决方案1】:

    symfony/forms 中,每个表单都是EventDispatcherInterface

    您可以订阅Events your form fires ?之一

    在您的情况下,您希望在处理表单之前添加字段。

    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);
            });
        }
    }
    

    您可以通过 Dependency-Injection 注入您的 RecetteRepository 并使用结果。

    通过以下方式监听表单事件:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 2016-01-11
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      相关资源
      最近更新 更多