2015-05-08 3 views
0

Я работаю над веб-приложением symfony2, я установил sonata Mongodb admin Bundle.but У меня небольшая проблема, моя модель данных - это документ Quizz, который ссылается на «QuizzTemplate» '(ссылка на «Один»). Это мой код:ссылка на один пакет Sonata Mongodb Admin

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
    ->addIdentifier('uid') 
    ->add('name') 
    ->add('quizzTemplate', null, array("required" => false) 
    ->add ('User', null, array('label' => 'Candidat','required' => false, 'by_reference' => true)) 
    ->add('_action', 'actions', array(
     'actions' => array(
      'view' => array(), 
      'edit' => array(), 
      ) 
     )) 
    ; 
} 

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $formMapper 
    ->add('uid') 
    ->add('name') 
    ->add('quizzTemplate', null, array()); 



} 

protected function configureShowFields(ShowMapper $showMapper) 
{ 

    $showMapper 
     ->add('name') 
     ->add('User') 
     ->add('numericresult',null ,array('label' => 'Resultat Global')) 

    ; 

} 


protected function configureDatagridFilters(DatagridMapper $datagrid) 
{ 
    $datagrid 
    ->add('uid') 
    ->add('name') 

    ; 
} 

На самом деле он работает для списка картографа, но это не тот случай с Configure и шоу, и это ошибка:

Error: Call to a member function getRepository() on a non-object

Я попробовал это так:

->add('quizzTemplate.id')

и я получил это:

No document manager defined for class \ATS\QuizzBundle\Document\QuizzTemplate

Кто-нибудь знает, как это исправить? Спасибо

ответ

0

У меня была такая же проблема с Sonata Mongodb. Я использую множественные соединения и менеджеры документов.

Вот моя первая ошибка: я создал администратор для существующего документа с командой app/console sonata:admin:generate, когда запрос для The fully qualified model class Я написал \Project\MyBundle\Document\MyDocument. Остальная часть процесса шло прекрасно, но в самом конце, когда генератор пытался генерировать MyDocumentAdmin класс я получил такую ​​же ошибку, как вы делали:

No document manager defined for class \Project\MyBundle\Document\MyDocument

Мне потребовалось некоторое время, чтобы выяснить, что пошло не так .. Я создал вручную класс администратора и получил ту же ошибку при попытке отобразить список.

На самом деле эта ошибка вызвана ошибкой в ​​пространстве имен, вам нужно удалить первый символ \ в пространстве имен классов в аргументах служебной сонаты.

Неправильный синтаксис:

arguments: [~, \MyProject\MyBundle\Document\MyDocument, SonataAdminBundle:CRUD]

Хороший синтаксис:

arguments: [~, MyProject\MyBundle\Document\MyDocument, SonataAdminBundle:CRUD]

Полное определение рабочего обслуживание:

my_project.admin.my_document: 
     class: MyProject\MyBundle\Admin\MyDocumentAdmin 
     arguments: [~, MyProject\MyBundle\Document\MyDocument, SonataAdminBundle:CRUD] 
     tags: 
      - {name: sonata.admin, manager_type: doctrine_mongodb, group: admin, label: MyDocument} 

После исправления, все снова работает нормально.

Смежные вопросы