<?php
namespace App\Infraestructure\Admin;
use App\Domain\Repository\FilterRepositoryInterface;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\DoctrineORMAdminBundle\Filter\CallbackFilter;
abstract class FilterAbstractAdmin extends AbstractAdmin
{
public function __construct(
$code,
$class,
$baseControllerName,
protected FilterRepositoryInterface $filterRepository
) {
parent::__construct($code, $class, $baseControllerName);
}
protected function configureDatagridFilters(DatagridMapper $filter): void
{
$class = $this->getClass();
$subClases = $this->getSubClasses();
if(count($subClases) > 0)
{
$class = reset($subClases);
}
if (!$filter->has('busqueda')) {
$filter
->add('busqueda', CallbackFilter::class, [
'label' => false,//'filter.label.busqueda',
'attr' => [
'class' => 'filter-to-navbar-left filter-to-navbar',
'data-order' => '1',
'placeholder' => 'filter.placeholder.busqueda',
],
'callback' => function ($queryBuilder, $alias, $field, $value) use($class) {
if (!$value->hasValue()) {
return;
}
$this->filterRepository->cbFilter($queryBuilder, $alias, $field, $value);
return true;
},
])
;
}
}
}