簡體   English   中英

Symfony2錯誤提交表單與實體類型(多對多關系)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM