Php Easyadmin一对多:不显示表单
通过Easyadmin、Symfony3和Doctrine,我试图为一篇文章显示一个嵌入式表单,以便将URL添加到文章本身 然而,当前的文章表单并没有显示UrlType表单,而是显示文本框,看起来,这些文本框应该是我想要添加的url的id 我发现以下配置应该可以正常工作(根据): 第条:Php Easyadmin一对多:不显示表单,php,forms,symfony,doctrine,symfony2-easyadmin,Php,Forms,Symfony,Doctrine,Symfony2 Easyadmin,通过Easyadmin、Symfony3和Doctrine,我试图为一篇文章显示一个嵌入式表单,以便将URL添加到文章本身 然而,当前的文章表单并没有显示UrlType表单,而是显示文本框,看起来,这些文本框应该是我想要添加的url的id 我发现以下配置应该可以正常工作(根据): 第条: class Article { [..] /** * @ORM\OneToMany(targetEntity="Url", mappedBy="article", cascad
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;
}
}
网址:
URL类型:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('address', TextType::class);
$builder->add('description', TextType::class);
}
我在代码中检查、反复检查和尝试了很多东西,搜索了google和stackoverflow
如何显示字段以向文章中添加新URL?感谢友好的朋友们,此问题已得到解决。事实证明,尽管在YAML配置中对UrlType使用了完全限定的名称空间,但该类型仍会被覆盖 解决方案:将
MyVendor\MyBundle\Form\UrlType
重命名为例如MyVendor\MyBundle\Form\urlentitype
这看起来像是Symfony或EasyAdmin中的一个bug
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);
}