вставьте многие ко многим SonataAdmin Bundle

У меня есть две таблицы, одна называется «Портал», а другая — «Категории», они соединены таблицей ссылок, потому что отношение «многие ко многим». Таблицы кодов следующие:

Категории классов

/**
* @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 не удалось преобразовать в строку


person Gaby L    schedule 28.11.2013    source источник


Ответы (1)


Может быть полезно для вас.

Пожалуйста, измените аннотацию обоих объектов.

Сущность Портал:

/** 
 * @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();

Может быть полезно

person M.B Kakadiya    schedule 29.11.2013