2016-11-12 4 views
1

У меня есть много разных ассоциаций с дополнительными полями. Я решил с новым лицом и два один ко многим отношений после этого урока: http://www.prowebdev.us/2012/07/symfnoy2-many-to-many-relation-with.htmlДоступ к доктрине в SonataAdmin Класс

Meeting ---> MeetingContacts < --- Контакт

Когда я создаю новую встречу мне нужно выбрать все люди, будут помогать, поэтому у меня есть список флажков со всеми контактами. Это прекрасно работает в Сонате.

Это мое совещание configureFormFields класс:

->with('Contacts', array('class' => 'col-md-6')) 
      ->add('contacts' , 'entity' , array(
         'class' => 'AppBundle:Contact' , 
         'expanded' => true , 
         'multiple' => true ,)) 
     ->end(); 

Моя проблема заключается в том, что я хочу, чтобы отфильтровать этот список флажок в поле Создать действий двух свойств контактного лица.

Решение, которое я основал на форумах, - передать массив в представление с контактами для каждого из этих значений, а затем в twig с помощью javascript show или скрыть этот флажок.

->with('Contacts', array('class' => 'col-md-6')) 
      ->add('contacts' , 'entity' , array(
         'class' => 'AppBundle:Contact' , 
         'expanded' => true , 
         'multiple' => true ,), 

         array('myArray' => myArray))) 
      ->end(); 

Теперь проблема заключается в том, что я не могу получить доступ к контактной Repository, чтобы создать этот массив в администраторе класса.

Я пытался без успеха:

$em = $this->getConfigurationPool()->getContainer()->get('Doctrine')->getManager() 

и добавить учение в службе (No Entity Manager in Custom Class and ContextErrorException)

sonata.admin.contact: 
    class: AppBundle\Admin\ContactAdmin 
    tags: 
     - { name: sonata.admin, manager_type: orm, group: "Content", label: "Contacts" } 
    arguments: 
     - ~ 
     - AppBundle\Entity\Contact 
     - ~ 
     - @doctrine.orm.default_entity_manager 

    calls: 
     - [ setTranslationDomain, [AppBundle]] 

но когда я добавить четвертый аргумент я заяц исключения для плохого формата YML.

Как я мог бы получить доступ к доктрине EM в классе Admin, или как я мог бы перейти к администратору? Создайте форму для этих дополнительных данных?

Спасибо.

ответ

1

Я нашел решение:

class MeetingAdmin extends AbstractAdmin 
{ 
    public $arrProfiles; 

    protected function configureFormFields(FormMapper $formMapper) 
    { 

     $this->arrProfiles = $this->getConfigurationPool()->getContainer()->get('doctrine')->getManager()->getRepository('AppBundle:Contact')->findProfile(); 

... 

Затем в шаблоне я могу получить доступ к массиву:

{{admin.arrProfiles}} 
Смежные вопросы