<?php
declare(strict_types=1);
namespace App\Admin;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Form\Type\ModelType;
use Sonata\AdminBundle\Show\ShowMapper;
final class CategoriaDownloadAdmin extends AbstractAdmin
{
protected $datagridValues = [
'_page' => 1,
'_sort_order' => 'DESC',
'_sort_by' => 'nome'
];
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper
->add('secao',null, ['label'=>'Seção'])
->add('nome','doctrine_orm_callback',[
'label'=>'Nome',
'callback' => array($this, 'filterNome'),
])
->add('descricao','doctrine_orm_callback',[
'label'=>'Descrição',
'callback' => array($this, 'filterDescricao'),
])
;
}
public function filterNome($queryBuilder, $alias, $field, $value)
{
if (!$value['value']) {
return;
}
$value = mb_strtolower($value['value']);
$queryBuilder
->andWhere("LOWER($alias.nome) LIKE :nome" )
->setParameter('nome', "%$value%");
return true;
}
public function filterDescricao($queryBuilder, $alias, $field, $value)
{
if (!$value['value']) {
return;
}
$value = mb_strtolower($value['value']);
$queryBuilder
->andWhere("LOWER($alias.descricao) LIKE :nome" )
->setParameter('nome', "%$value%");
return true;
}
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper
->addIdentifier('secao.nome', null, ['label'=>'Seção'])
->add('nome', null, ['label'=>'Nome'])
->add('descricao', null, ['label'=>'Descrição'])
->add('_action', null, [
'actions' => [
'show' => [],
'edit' => [],
'delete' => [],
],
]);
}
protected function configureFormFields(FormMapper $formMapper): void
{
$formMapper
->add('ordem', null, ['label'=>'Ordem'])
->add('secao', ModelType::class, [
'placeholder' => '-- Selecione --',
'label' => 'Seção da Categoria',
'required' => true,
'expanded' => false,
'multiple' => false,
])
->add('nome', null, ['label'=>'Nome'])
->add('descricao', null, ['label'=>'Descrição'])
;
}
protected function configureShowFields(ShowMapper $showMapper): void
{
$showMapper
->add('arquivosDownload', null, ['template'=>'Download/lista-arquivos-categoria.html.twig'])
;
}
}