[英]Symfony2 error submitting form with entity type (many to many relation)
我在symfony2中創建了一個簡單的多對多($ post - > $ category)關系,我想在我的表單構建器中使用,這要歸功於“實體”字段類型,現在有一個multiple = false選項(默認),盡管它有很多很多。
這是我的Post實體的一部分:
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="Yeomi\PostBundle\Entity\Category", inversedBy="posts")
*/
private $categories;
/**
* Add categories
*
* @param \Yeomi\PostBundle\Entity\Category $categories
* @return Post
*/
public function addCategory(\Yeomi\PostBundle\Entity\Category $category)
{
$this->categories[] = $category;
return $this;
}
/**
* Remove categories
*
* @param \Yeomi\PostBundle\Entity\Category $categories
*/
public function removeCategory(\Yeomi\PostBundle\Entity\Category $category)
{
$this->categories->removeElement($category);
}
/**
* Get categories
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getCategories()
{
return $this->categories;
}
這是我的PostType:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title', 'text')
->add('content', 'textarea')
->add('published', 'checkbox')
->add("categories", "entity", array(
"class" => "YeomiPostBundle:Category",
"property" => "name",
"multiple" => false,
))
->add('published', 'checkbox')
->add('save', "submit")
;
}
這就是我得到的錯誤
500內部服務器錯誤 - NoSuchPropertyException
Neither the property "categories" nor one of the methods "addCategory()"/"removeCategory()", "setCategories()", "categories()", "__set()" or "__call()" exist and have public access in class "Yeomi\PostBundle\Entity\Post".
它適用於multiple = true,但這不是我想要的,是不是因為關系是多對多所以我被迫使它成為一個多實體字段?
我已經清除緩存,doctrine緩存,我重新生成了我的實體getter / setter,不知道我可能做錯了什么..
謝謝你的幫助
通過symfony2實體選擇標簽顯示找到答案
問題確實是因為ManyToMany關系,(這實際上是有道理的,因為如果你有一個ManyToMany關系,你希望能夠選擇多個實體),
通過為整個ArrayCollection
屬性添加setter,可以使用multiple = false
來實現此操作。
/**
* Set categories
* @param \Doctrine\Common\Collections\Collection $categories
*
* @return Post
*/
public function setCategories($categories)
{
if(!is_array($categories))
{
$categories = array($categories);
}
$this->categories = $categories;
return $this;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.