symfony - 奏鸣曲管理员,过滤器中的自定义查询

标签 symfony sonata-admin

我正在使用 SonataAdminBundle,我有一个关于 MyEntityAdmin 类中的过滤器的问题。

我有第一个函数 protected function configureFormFields(FormMapper $formMapper)用于列出要在创建/编辑表单上显示的所有字段。

如果我有一个字段类型实体,我可以这样做:

->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'));
              },)
            )

但我还有另一个功能 protected function configureDatagridFilters(DatagridMapper $datagridMapper)对于要在过滤器表单上显示的字段,我已经做了同样的事情,对实体字段类型的自定义查询,但如果我这样做,我有错误:
No attached service to type named `entity`  

我怎样才能做到这一点 ?

最佳答案

过滤器配置与奏鸣曲管理包中的表单配置完全不同。

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

当您通过 configuratDataFilters 添加新过滤器时它接收参数:字段名称、过滤器类型、过滤器配置、表单字段类型和表单字段配置。

因此,如果您只想覆盖 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'));
           }
))

关于symfony - 奏鸣曲管理员,过滤器中的自定义查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26256958/

相关文章:

php - 从 Sonata-admin 的侧边菜单中删除子管理员

php - 为 EntityType 设置数据属性(Sonata Admin)

php - 未定义索引 "order",映射错误?

symfony - SonataAdminBundle : display non crud (statistics)

symfony - Sonata 用户 - 角色安全 访问被拒绝

php - 将 'forward' 与 FOSOAuthServerBundle TokenController 结合使用

javascript - 使用 Symfony Webpack Encore 未定义的 DataTables API

symfony - 如何在parameters.yml symfony2中转义 "%"

mongodb - ODM 查询生成器 : Is there an "inverse in" operator, 或等效操作?

Symfony2 + swift mailer + 命令 : email body displayed into the console