简体   繁体   English

Sonata管理员,过滤器中的自定义查询

[英]Sonata admin, custom query in filter

I'm using SonataAdminBundle and I have a question about filters in the class MyEntityAdmin. 我正在使用SonataAdminBundle,我对MyEntityAdmin类中的过滤器有疑问。

I have a first function protected function configureFormFields(FormMapper $formMapper) for list all fields to be shown on create/edit forms. 我有一个第一个函数protected function configureFormFields(FormMapper $formMapper)用于列出要在创建/编辑表单上显示的所有字段。

If I have a field type entity, I can do something like this: 如果我有一个字段类型实体,我可以这样做:

->add('commercial', 'entity', array(
                'class' => 'MyBundle:User',
                'query_builder' => function(EntityRepository $er) {
                  return $er->createQueryBuilder('u')
                            ->groupBy('u.id')
                            ->orderBy('u.id', 'ASC')
                            ->setParameters(array(1 => 'Commercial'));
              },)
            )

But I have another function protected function configureDatagridFilters(DatagridMapper $datagridMapper) for Fields to be shown on filter forms, and I have do to the same thing, a custom query on an entity field type, but if I do the same, I have the error: 但是我有另一个函数protected function configureDatagridFilters(DatagridMapper $datagridMapper)要求字段显示在过滤器表单上,我也做同样的事情,一个实体字段类型的自定义查询,但如果我这样做,我有错误:

No attached service to type named `entity`  

How can I do that ? 我怎样才能做到这一点 ?

Filters configuration is quite different than form configuration in sonata admin bundle. 过滤器配置与奏鸣曲管理包中的表单配置完全不同。

Look at documentation: http://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/filter_field_definition.html 查看文档: http//sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/filter_field_definition.html

When you add new filter through configuratDataFilters it receives parameters: field name, filter type, filter configuration, form field type and form field configuration. 当您通过configuratDataFilters添加新过滤器时,它会接收参数:字段名称,过滤器类型,过滤器配置,表单字段类型和表单字段配置。

So if you want only to override query_buider for entity choice type you should try call like this: 因此,如果您只想覆盖query_buider实体选择类型,您应该尝试这样调用:

->add('commercial', null, array(), 'entity', array(
          'class' => 'MyBundle:User',
          'query_builder' => function(EntityRepository $er) {
               return $er->createQueryBuilder('u')
                         ->groupBy('u.id')
                         ->orderBy('u.id', 'ASC')
                         ->setParameters(array(1 => 'Commercial'));
           }
))

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

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