簡體   English   中英

插入多對多SonataAdmin捆綁包

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

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