У меня есть две таблицы, одна называется «Портал», а другая — «Категории», они соединены таблицей ссылок, потому что отношение «многие ко многим». Таблицы кодов следующие:
Категории классов
/**
* @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 не удалось преобразовать в строку