В моем проекте Symfony я использую SonataAdminBundle. И у меня вопрос: Например, у меня есть объект с функцией:SonataAdminBundle, фильтрация по функции
class Entity {
protected $id;
public idBiggerThan($value) {
return $id > $value;
}
И я хочу, чтобы создать фильтр, который фильтрует список в результате этой функции (например, чтобы иметь возможность выбирать только объекты, которые имеют идентификатор больше текущего пользователя).
Я понимаю, что этот фильтр можно написать без использования этой функции, но у меня есть гораздо более сложные функции, для которых я не хочу писать запросы.
Благодарим за помощь.
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'] (https://github.com/dianuj89/Sonata-admin-number- диапазон-фильтр) –