![](/img/trans.png)
[英]One to Many relations and add/edit form in SonataAdmin and Symfony2
[英]insert many to many SonataAdmin Bundle
我有兩個表,一個稱為Portal,另一個稱為Categories,它們通過鏈接表連接在一起,因為這種關系是多對多的。 代碼表如下:
類類別
/**
* @var integer
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
**/
private $id;
/**
* @ManyToMany(targetEntity="Portal")
*/
private $portal;
public function __construct() {
$this->portal = new \Doctrine\Common\Collections\ArrayCollection();
}
...
類門戶
class Portal
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ManyToMany(targetEntity="Categories")
* @JoinTable(name="portal_categories")
*/
private $categories;
public function __construct() {
$this->categories = new \Doctrine\Common\Collections\ArrayCollection();
}
....
我在PortalAdmin :: configureFormFields中開發了以下內容
$formMapper
->with('Portal')
->add('name', 'text', array('label' => ' Name'))
->add('description', 'text', array('label' => 'Description'))
->add('webSiteLink', 'text', array('label' => 'Web Site ','required'=> false))
->add('categories', 'sonata_type_collection',array( 'by_reference' => false))
->end();
但是,僅顯示帶有彈出按鈕的按鈕,用於插入新類別,但是我需要,該按鈕僅顯示具有類別的列表並添加任意數量的類別
當我嘗試這個:
$formMapper
->with('Portal')
->add('name', 'text', array('label' => ' Name'))
->add('description', 'text', array('label' => 'Description'))
->add('webSiteLink', 'text', array('label' => 'Web Site ','required'=> false))
->add('categories', 'sonata_type_model', array('required' => false, 'expanded' => false, 'multiple' => true, 'label' => 'Chose your categories'))
->end();
顯示以下錯誤:無法將類Project \\ PortalBundle \\ Entity \\ Categories的對象轉換為字符串
可能對您有幫助。
請更改兩個實體的注釋。
實體門戶 :
/**
* @var \Categories
* @ORM\ManyToMany(targetEntity="Categories")
* @ORM\JoinTable(name="portal_Categories",
* joinColumns={@JoinColumn(name="portal_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="cat_id", referencedColumnName="id")}
* )
*/
private $categories;
實體類別 :
/**
* @var \Portal
*
* @ORM\ManyToMany(targetEntity="Portal", mappedBy="categories")
*/
private $portals;
我嘗試這樣做:
$formMapper
->with('Portal')
->add('name', 'text', array('label' => ' Name'))
->add('description', 'text', array('label' => 'Description'))
->add('webSiteLink', 'text', array('label' => 'Web Site ','required'=> false))
->add('categories', 'sonata_type_model', array('required' => false, 'expanded' => false, 'multiple' => true, 'label' => 'Chose your categories'))
->end();
可能會有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.