src/Infraestructure/Admin/FilterAbstractAdmin.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Infraestructure\Admin;
  3. use App\Domain\Repository\FilterRepositoryInterface;
  4. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  5. use Sonata\DoctrineORMAdminBundle\Filter\CallbackFilter;
  6. abstract class FilterAbstractAdmin extends AbstractAdmin
  7. {
  8.     public function __construct(
  9.         $code,
  10.         $class,
  11.         $baseControllerName,
  12.         protected FilterRepositoryInterface $filterRepository
  13.     ) {
  14.         parent::__construct($code$class$baseControllerName);
  15.     }
  16.     protected function configureDatagridFilters(DatagridMapper $filter): void
  17.     {
  18.         $class $this->getClass();
  19.         $subClases $this->getSubClasses();
  20.         if(count($subClases) > 0)
  21.         {
  22.             $class reset($subClases);
  23.         }
  24.         if (!$filter->has('busqueda')) {
  25.             $filter
  26.                 ->add('busqueda'CallbackFilter::class, [
  27.                     'label' => false,//'filter.label.busqueda',
  28.                     'attr' => [
  29.                         'class' => 'filter-to-navbar-left filter-to-navbar',
  30.                         'data-order' => '1',
  31.                         'placeholder' => 'filter.placeholder.busqueda',
  32.                     ],
  33.                     'callback' => function ($queryBuilder$alias$field$value) use($class) {
  34.                         if (!$value->hasValue()) {
  35.                             return;
  36.                         }
  37.                         $this->filterRepository->cbFilter($queryBuilder$alias$field$value);
  38.                         return true;
  39.                     },
  40.                 ])
  41.             ;
  42.         }
  43.     }
  44. }