0

使用 Easyadmin、Symfony3 和 Doctrine,我正在尝试为文章显示嵌入式表单以将 Urls 添加到自身。

但是,文章表单目前不显示UrlType 表单,而是显示文本框 - 看起来 - 期望我想添加的 Url 的 Id。

在此处输入图像描述

我发现以下配置应该可以工作(根据这个问题):

       form:
            fields:
                [...]
                - { property: 'urls', type: 'collection', type_options: { entry_type: 'MyVendor\MyBundle\Form\UrlType', by_reference: false }  }

文章:

class Article
{
    [..]  

    /**
     * @ORM\OneToMany(targetEntity="Url", mappedBy="article", cascade={"persist", "remove"})
     */
    private $urls;

    public function __construct() {
        $this->urls = new ArrayCollection();
    }

    /**
     * Add url
     *
     * @param Url $url
     *
     * @return Article
     */
    public function addUrl(Url $url)
    {
        $url->setArticle($this);

        $this->urls[] = $url;

        return $this;
    }

    /**
     * Remove url
     *
     * @param Url $url
     */
    public function removeUrl(Url $url)
    {
        $this->urls->removeElement($url);
    }

    /**
     * Get url
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getUrls()
    {
        return $this->urls;
    }
}

网址:

class Url
{
   [..]  

    /**
     * @var Article
     *
     * @ORM\ManyToOne(targetEntity="Article", inversedBy="urls")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="article_id", referencedColumnName="id")
     * })
     */
    private $article;


    /**
     * Set article
     *
     * @param Article $article
     *
     * @return Url
     */
    public function setArticle(Article $article = null)
    {
        $this->article = $article;

        return $this;
    }

    /**
     * Get article
     *
     * @return Article
     */
    public function getArticle()
    {
        return $this->article;
    }
}

网址类型:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('address', TextType::class);
    $builder->add('description', TextType::class);
}

我已经检查,仔细检查并在代码中尝试了很多东西,并搜索了谷歌以及 stackoverflow。

如何显示字段以向文章添加新 URL?

4

1 回答 1

0

感谢EasyAdmin的友好人员,此问题已得到解决。事实证明,尽管在 YAML 配置中对 UrlType 使用了完全限定的命名空间,但该类型被Symfony UrlType覆盖。

解决方案:重命名MyVendor\MyBundle\Form\UrlType为例如MyVendor\MyBundle\Form\UrlEntityType

这看起来像是 Symfony 或 EasyAdmin 中的一个错误。

于 2017-06-05T04:24:22.073 回答