src/Admin/CategoriaDownloadAdmin.php line 14

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Admin;
  4. use Sonata\AdminBundle\Admin\AbstractAdmin;
  5. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  6. use Sonata\AdminBundle\Datagrid\ListMapper;
  7. use Sonata\AdminBundle\Form\FormMapper;
  8. use Sonata\AdminBundle\Form\Type\ModelType;
  9. use Sonata\AdminBundle\Show\ShowMapper;
  10. final class CategoriaDownloadAdmin extends AbstractAdmin
  11. {
  12.     protected $datagridValues = [
  13.         '_page'         => 1,
  14.         '_sort_order'   => 'DESC',
  15.         '_sort_by'      => 'nome'
  16.     ];
  17.     protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
  18.     {
  19.         $datagridMapper
  20.             ->add('secao',null, ['label'=>'Seção'])
  21.             ->add('nome','doctrine_orm_callback',[
  22.                 'label'=>'Nome',
  23.                 'callback'   => array($this'filterNome'),
  24.             ])
  25.             ->add('descricao','doctrine_orm_callback',[
  26.                 'label'=>'Descrição',
  27.                 'callback'   => array($this'filterDescricao'),
  28.             ])
  29.         ;
  30.     }
  31.     public function filterNome($queryBuilder$alias$field$value)
  32.     {
  33.         if (!$value['value']) {
  34.             return;
  35.         }
  36.         $value mb_strtolower($value['value']);
  37.         $queryBuilder
  38.             ->andWhere("LOWER($alias.nome) LIKE :nome" )
  39.             ->setParameter('nome'"%$value%");
  40.         return true;
  41.     }
  42.     public function filterDescricao($queryBuilder$alias$field$value)
  43.     {
  44.         if (!$value['value']) {
  45.             return;
  46.         }
  47.         $value mb_strtolower($value['value']);
  48.         $queryBuilder
  49.             ->andWhere("LOWER($alias.descricao) LIKE :nome" )
  50.             ->setParameter('nome'"%$value%");
  51.         return true;
  52.     }
  53.     protected function configureListFields(ListMapper $listMapper): void
  54.     {
  55.         $listMapper
  56.             ->addIdentifier('secao.nome'null, ['label'=>'Seção'])
  57.             ->add('nome'null, ['label'=>'Nome'])
  58.             ->add('descricao'null, ['label'=>'Descrição'])
  59.             ->add('_action'null, [
  60.                 'actions' => [
  61.                     'show' => [],
  62.                     'edit' => [],
  63.                     'delete' => [],
  64.                 ],
  65.             ]);
  66.     }
  67.     protected function configureFormFields(FormMapper $formMapper): void
  68.     {
  69.         $formMapper
  70.             ->add('ordem'null, ['label'=>'Ordem'])
  71.             ->add('secao'ModelType::class, [
  72.                 'placeholder' => '-- Selecione --',
  73.                 'label' => 'Seção da Categoria',
  74.                 'required' => true,
  75.                 'expanded' => false,
  76.                 'multiple' => false,
  77.             ])
  78.             ->add('nome'null, ['label'=>'Nome'])
  79.             ->add('descricao'null, ['label'=>'Descrição'])
  80.             ;
  81.     }
  82.     protected function configureShowFields(ShowMapper $showMapper): void
  83.     {
  84.         $showMapper
  85.             ->add('arquivosDownload'null, ['template'=>'Download/lista-arquivos-categoria.html.twig'])
  86.             ;
  87.     }
  88. }