Sonata mongodb管理包筛选器(按引用)

Sonata mongodb管理包筛选器(按引用),mongodb,sonata-admin,symfony,sonata,Mongodb,Sonata Admin,Symfony,Sonata,我随身带着文件 /**@MongoDB\ReferenceMany(targetDocument=“NewsTag”)*/ 私人$tags 关系 在我的sonata管理员中,我想按标签过滤列表。我试着用 $datagridMapper->add('tags',null,array(),null,array('expanded'=>true,'multiple'=>true)) 与文档中相同,但有一个错误 无法加载类型“文档” 有人知道为什么吗 UPD:堆栈跟踪 Symfony\Component

我随身带着文件

/**@MongoDB\ReferenceMany(targetDocument=“NewsTag”)*/
私人$tags

关系

在我的sonata管理员中,我想按标签过滤列表。我试着用

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

与文档中相同,但有一个错误

无法加载类型“文档”

有人知道为什么吗

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

所以,如果你想用sonata_type_模型进行过滤,可能会出现一个bug。ChoiceField中没有modelManager。 但您可以在configureDatagridFilters中手动添加它,如下所示:

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

我认为第二个参数,
null
,被猜测为“document”。尝试将其替换为
dacument
以确认这一点。如果错误消息是关于
dacument
,那么我的理论是正确的。此外,还应提供堆栈跟踪(作为文本,请参见页面底部)Yes。它被猜测为
文档
。我已经在源代码中找到了位置。问题是第二个论点应该做什么。我尝试了
doctrine\u mongo\u模型
,但它也猜测为
文档
/第四个参数?我总是把它们混在一起…好吧,现在我又犯了一个错误。我尝试添加('tags',null,[],'sonata_type_model',['multiple'=>true,'property'=>'name','by_reference'=>false])
,错误是
可捕获的致命错误:参数1传递给sonata\AdminBundle\Form\ChoiceList\ModelChoiceLoader::\uu构造()必须在第13150行的/var/www/meteoprog-site-s3/var/cache/dev/classes.php中调用并定义接口Sonata\AdminBundle\Model\modelmanagerface,给定空值