我有与“用户”相关的实体“操作”。在 SonataAdminBundle 中创建了管理 CRUD 控制器。除了用户过滤器呈现为下拉列表之外,一切正常。我有 8000 名用户并且还在不断增长,所以你一定明白为什么这是一个问题。
我希望用户过滤器成为文本输入并提交搜索LIKE %username%
现在我添加这样的用户过滤器 -$datagridMapper->add('user')
.
我知道我可以添加过滤器类型和字段类型,但我无法找到正确的组合和选项。找到了关于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但仍然没有成功。
最终解决方案
根据 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 http://sonata-project.org/bundles/doctrine-orm-admin/master/doc/reference/filter_field_definition.html#callback。您可以尝试将“field_type”选项设置为“text”(我在我工作的项目中使用“choice”)并添加您需要过滤的查询生成器操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)