简体   繁体   English

Sonata MongoDB管理员捆绑过滤器参考

[英]Sonata mongodb admin bundle filter by reference

I have document with 我有文件

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

relation. 关系。

In my sonata admin i want to filter list by tag. 在我的奏鸣曲管理员中,我想按标签过滤列表。 I try to use 我尝试使用

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

as in documentation, but have an error 如文档中所述,但有一个错误

Could not load type "document"

Anybody know why? 有人知道为什么吗?

UPD: stack trace UPD:堆栈跟踪

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

So if you want to filter with sonata_type_model probably a bug hapens. 因此,如果您想使用sonata_type_model进行过滤,可能会出现错误。 You don't have modelManager in ChoiceField. 您在ChoiceField中没有modelManager。 But you can manually add it in configureDatagridFilters like this: 但是您可以像这样在configureDatagridFilters中手动添加它:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM