2016-06-10 13 views
1

Ich habe Dokument mitSonata mongodb Admin-Bundle Filter durch Verweis

/** @MongoDB\ReferenceMany(targetDocument="NewsTag") */ private $tags;

Beziehung.

In meinem Sonaten Admin möchte ich Liste nach Tag filtern. Ich versuche

$datagridMapper->add('tags', null, array(), null, array('expanded' => true, 'multiple' => true))

wie in Dokumentationen zu nutzen, haben aber einen Fehler

Could not load type "document"

Jeder weiß, warum?

UPD: Stack-Trace

Symfony\Component\Form\Exception\InvalidArgumentException: Could not load type "document" 
at n/a 
    in /var/www/meteoprog-site-s3/vendor/symfony/symfony/src/Symfony/Component/Form/FormRegistry.php line 87 

at Symfony\Component\Form\FormRegistry->getType('document') 
    in /var/www/meteoprog-site-s3/vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php line 83 

at Symfony\Component\Form\FormFactory->createNamedBuilder('value', 'document', null, array('required' => false, 'class' => 'AppBundle\Document\NewsTag', 'expanded' => true, 'multiple' => true)) 
    in /var/www/meteoprog-site-s3/vendor/symfony/symfony/src/Symfony/Component/Form/FormBuilder.php line 106 

at Symfony\Component\Form\FormBuilder->create('value', 'document', array('required' => false, 'class' => 'AppBundle\Document\NewsTag', 'expanded' => true, 'multiple' => true)) 
    in /var/www/meteoprog-site-s3/vendor/symfony/symfony/src/Symfony/Component/Form/FormBuilder.php line 267 

at Symfony\Component\Form\FormBuilder->resolveChildren() 
    in /var/www/meteoprog-site-s3/vendor/symfony/symfony/src/Symfony/Component/Form/FormBuilder.php line 215 

at Symfony\Component\Form\FormBuilder->getForm() 
    in /var/www/meteoprog-site-s3/vendor/symfony/symfony/src/Symfony/Component/Form/FormBuilder.php line 221 

at Symfony\Component\Form\FormBuilder->getForm() 
    in /var/www/meteoprog-site-s3/var/cache/dev/classes.php line 11085 

at Sonata\AdminBundle\Datagrid\Datagrid->buildPager() 
    in /var/www/meteoprog-site-s3/var/cache/dev/classes.php line 11189 

at Sonata\AdminBundle\Datagrid\Datagrid->getForm() 
    in /var/www/meteoprog-site-s3/vendor/sonata-project/admin-bundle/Controller/CRUDController.php line 105 

at Sonata\AdminBundle\Controller\CRUDController->listAction() 
    in line 

at call_user_func_array(array(object(LanguagesAdminController), 'listAction'), array()) 
    in /var/www/meteoprog-site-s3/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php line 139 

at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), '1') 
    in /var/www/meteoprog-site-s3/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php line 62 

at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), '1', true) 
    in /var/www/meteoprog-site-s3/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php line 169 

at Symfony\Component\HttpKernel\Kernel->handle(object(Request)) 
    in /var/www/meteoprog-site-s3/web/app_dev.php line 30 
+0

Ich denke, das zweite Argument, 'null', wird als„Dokument“erraten. Versuchen Sie es mit "document" zu ersetzen, um dies zu bestätigen. Wenn die Fehlermeldung über "document" spricht, ist meine Theorie richtig. Außerdem sollten Sie einen Stack-Trace bereitstellen (als Text siehe unten auf der Seite). – greg0ire

+0

Ja. Es wurde als "Dokument" erraten. Ich finde schon im Quellcode wo wo. Frage ist was sollte mit dem zweiten Argument. Ich probierte 'doctrin_mongo_model', aber es wurde auch als' document'/ –

+0

Und mit dem vierten Argument? Ich verwechsle sie immer ... – greg0ire

Antwort

2

Also, wenn Sie mit sonata_type_model filtern möchten wahrscheinlich ein Fehler hapens. Sie haben keinen ModelManager in ChoiceField. Aber man kann es in configureDatagridFilters wie diese manuell hinzufügen:

$datagridMapper 
     ->add('tags', null, [], 'sonata_type_model', 
      [ 
       'model_manager' => $datagridMapper->getAdmin()->getModelManager(), 
       'property' => 'name', 
       'multiple' => true, 
       'by_reference' => false 
      ]);