【发布时间】:2015-08-04 11:03:06
【问题描述】:
在我的 Symfony 项目中,我使用的是 SonataAdminBundle。我有一个问题: 例如,我有一些具有功能的实体:
class Entity {
protected $id;
public idBiggerThan($value) {
return $id > $value;
}
我想创建一个过滤器,通过此函数的结果过滤列表(例如,能够仅选择 ID 大于当前用户的实体)。
我知道这个过滤器可以不使用这个函数来编写,但是我有更复杂的函数,我不想为此编写查询。
感谢您的帮助。
UPD:我尝试过类似的方法,但它不起作用
$datagridMapper
->add('id', 'doctrine_orm_callback', array(
'callback' =>
function($queryBuilder, $alias, $field, $value) {
if (!$value['value']) {
return;
}
$queryBuilder
->where($alias . '. idBiggerThan(:current_user)')
->setParameter('current_user', $this->getCurrentUser()->getId());
},
'field_type' => 'checkbox'
));
【问题讨论】:
-
您可以创建自己的过滤器类型,无论您的标准是什么,我都根据自己的需要创建了一个具有数字范围过滤器
Sonata-admin-number-range-filter
标签: php symfony sonata-admin