Easyadmin One-to-Many:不显示表格

时间:2017-05-25 04:53:10

标签: php forms symfony doctrine symfony2-easyadmin

使用Easyadmin,Symfony3和Doctrine我试图显示一个文章的嵌入表单,以便将Urls添加到自身。

但是,目前的文章表单并未显示 UrlType表单,而是文本框 - 它看起来似乎 - 期待我要添加的网址ID。

enter image description here

我发现以下配置应该正常工作(根据this question):

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

UrlType:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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