使用Easyadmin,Symfony3和Doctrine我试图显示一个文章的嵌入表单,以便将Urls添加到自身。
但是,目前的文章表单并未显示 UrlType表单,而是文本框 - 它看起来似乎 - 期待我要添加的网址ID。
我发现以下配置应该正常工作(根据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。
如何显示字段以向文章添加新网址?
答案 0 :(得分:0)
感谢EasyAdmin友好的人们,这个问题已经解决了。事实证明,尽管在YAML配置中使用了完全限定的命名空间到UrlType,但是Symfony UrlType覆盖了该类型。
解决方案:将MyVendor\MyBundle\Form\UrlType
重命名为MyVendor\MyBundle\Form\UrlEntityType
这看起来像是Symfony或EasyAdmin中的错误。