代码之家  ›  专栏  ›  技术社区  ›  treyBake user1850175

symfony表单-添加输入数组

  •  0
  • treyBake user1850175  · 技术社区  · 7 年前

    所以我试图为我的表单创建一个输入数组,但是在文档中还没有找到任何相关的资源(如果是这样的话,我可能遗漏了so link)。

    简而言之,我想呈现这样的东西:

    <select name="my-select" id="some-select">
        <option value="a">A</option>
        <option value="b">B</option>
        <option value="c">C</option>
    </select>
    
    <button type="button" class="btn btn-primary" id="add-new-option">
        Add Another Option
    </button>
    

    因此,用户可以选择选项a,点击按钮将选项c以及a添加到实体中。

    选项结果存储在如下表中:

    entity_id  option_value
    1          A
    1          C
    2          B
    2          A
    

    我想这样做:

    foreach ($arrayInput as $key => $value)
    {
        $option = new Option();
        $option->setEntityId($entity->getId());
        $option->setOptionValue($value);
    }
    

    在控制器中。

    但我有一种可怕的感觉,已经有办法了,我只是没能找到它。否则我必须在我的小枝模板中使用HTML,我会尽量减少。

    那么,上述方法是实现我想要的最好方法吗?

    我当前的实体:

    <?php
    
    namespace App\Entity;
    
    use Doctrine\ORM\Mapping as ORM;
    
    /**
     * @ORM\Entity(repositoryClass="App\Repository\PageRepository")
     */
    class Page
    {
        /**
         * @ORM\Id()
         * @ORM\GeneratedValue()
         * @ORM\Column(type="integer")
         */
        private $id;
    
        /**
         * @ORM\Column(type="string", length=125)
         */
        private $title;
    
        /**
         * @ORM\Column(type="text")
         */
        private $content;
    
        /**
         * @ORM\Column(type="boolean")
         */
        private $approved;
    
        /**
         * @ORM\Column(type="datetime")
         */
        private $created_ts;
    
        /**
         * @ORM\Column(type="datetime", nullable=true)
         */
        private $last_edit_ts;
    
        /**
         * @ORM\Column(type="integer")
         */
        private $author_id;
    
        /**
         * @ORM\ManyToOne(targetEntity="App\Entity\Tag")
         */
        private $tag;
    
        public function getTag(): ?Tag
        {
            return $this->tag;
        }
    
        public function getId()
        {
            return $this->id;
        }
    
        public function getTitle(): ?string
        {
            return $this->title;
        }
    
        public function setTitle(string $title): self
        {
            $this->title = $title;
    
            return $this;
        }
    
        public function getContent(): ?string
        {
            return $this->content;
        }
    
        public function setContent(string $content): self
        {
            $this->content = $content;
    
            return $this;
        }
    
        public function getApproved(): ?bool
        {
            return $this->approved;
        }
    
        public function setApproved(bool $approved): self
        {
            $this->approved = $approved;
    
            return $this;
        }
    
        public function getCreatedTs(): ?\DateTimeInterface
        {
            return $this->created_ts;
        }
    
        public function setCreatedTs(\DateTimeInterface $created_ts): self
        {
            $this->created_ts = $created_ts;
    
            return $this;
        }
    
        public function getLastEditTs(): ?\DateTimeInterface
        {
            return $this->last_edit_ts;
        }
    
        public function setLastEditTs(?\DateTimeInterface $last_edit_ts): self
        {
            $this->last_edit_ts = $last_edit_ts;
    
            return $this;
        }
    
        public function getAuthorId(): ?int
        {
            return $this->author_id;
        }
    
        public function setAuthorId(int $author_id): self
        {
            $this->author_id = $author_id;
    
            return $this;
        }
    }
    

    谢谢

    1 回复  |  直到 7 年前
        1
  •  0
  •   Vyctorya    7 年前

    你可以用 ChoiceType (用于字符串)或 EntityType (对于实体)与 'multiple' => true .

    推荐文章