使用 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?