symfony - symfony 2.4 中奏鸣曲管理中关系对象的数据网格过滤器作为文本字段(而不是下拉列表)

标签 symfony sonata-admin symfony-2.4

我有与“用户”相关的实体“操作”。在 SonataAdminBundle 中创建了管理 CRUD Controller 。除了用户过滤器呈现为下拉列表之外,一切正常。我有 8000 名用户并且还在不断增长,所以你一定明白为什么这是一个问题。
我希望用户过滤器是文本输入,并在提交时使用 LIKE %username%

进行搜索

现在我添加这样的用户过滤器 - $datagridMapper->add('user')

我知道我可以添加过滤器类型和字段类型,但我无法找到正确的组合和选项。找到信息 http://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/filter_field_definition.html但仍然没有成功。

最终解决方案

根据 Alex Togo 的回答,我使用了以下代码:

$datagridMapper->add('user', 'doctrine_orm_callback', array(
'callback' => function($queryBuilder, $alias, $field, $value) {
    if (empty($value['value'])) {
        return;
    }
    $queryBuilder->leftJoin(sprintf('%s.user', $alias), 'u');
    $queryBuilder->where('u.username LIKE :username');
    $queryBuilder->setParameter('username', '%'.$value['value'].'%');
    return true;
},
'field_type' => 'text'
))

最佳答案

我的项目需要这样的东西。我使用 this 实现了此功能。您可以尝试将“field_type”选项设置为“text”(我在我工作的项目中使用“choice”)并添加您需要过滤的查询生成器操作。

关于symfony - symfony 2.4 中奏鸣曲管理中关系对象的数据网格过滤器作为文本字段(而不是下拉列表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22932156/

相关文章:

php - 如何根据 Symfony 4 中的 "dev/prod"环境允许/拒绝路由?

inheritance - 使用继承实体的 ACL 和 Sonata Admin

php - 如何在不在 Symfony 中创建实体的情况下访问数据库中的不同表

symfony - 如何动态为用户添加角色?

php - Symfony 4 设置问题(路由器异常)

symfony - 如何在Windows上正确添加Symfony到Path?

symfony - 自定义 Sonata Admin bundle 导出的 CSV 内容

jquery - 实体管理 formMapper 的自定义奏鸣曲管理模板

ajax - symfony2 安全性 - 禁用登录路径并显示禁止

symfony - 添加自定义按钮以编辑奏鸣曲管理包的页面