<?php
namespace App\Admin;
use App\Entity\Seo;
use Doctrine\ORM\EntityManagerInterface;
use FOS\CKEditorBundle\Form\Type\CKEditorType;
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\ModelListType;
use Sonata\AdminBundle\Show\ShowMapper;
use Sonata\Form\Type\CollectionType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
class ProductAdmin extends AbstractAdmin
{
protected $datagridValues = array(
'_page' => 1,
'_sort_order' => 'ASC',
'_sort_by' => 'id',
);
private $entityManager;
public function __construct(?string $code = null, ?string $class = null, ?string $baseControllerName = null, EntityManagerInterface $entityManager = null)
{
$this->entityManager = $entityManager;
parent::__construct($code, $class, $baseControllerName);
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper
->add('name', null, ['label' => 'Nombre'])
->add('categories', null, ['label' => 'Categorías'])
;
}
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper
->add('id')
->addIdentifier('name', null, ['label' => 'Nombre'])
->addIdentifier('categories', null, ['label' => 'Categorías'])
->add('public', null, ['label' => '¿Publicado?', 'editable' => true])
->addIdentifier('create_at', null, ['label' => 'Creado el']);
}
protected function configureFormFields(FormMapper $formMapper): void
{
$formMapper
->tab('General')
->with('')
->add('public', null, ['label' => '¿Publicado?'])
->add('name', null, ['label' => 'Nombre'])
->add('categories', null, ['label' => 'Categorías'])
->add('description', CKEditorType::class, ['label' => 'Descripción', 'required' => false])
->add('recommended_uses', CKEditorType::class, ['label' => 'Usos Recomendados', 'required' => false])
->add('uses', CKEditorType::class, ['label' => 'Usos', 'required' => false])
->add('image', ModelListType::class, ['label' => 'Imagen'], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image']])
->add('image_cover', ModelListType::class, ['label' => 'Imagen Portada'], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image']])
->add('video', ModelListType::class, ['label' => 'Video'], ['link_parameters' => ['context' => 'video']])
->add('video_image', ModelListType::class, ['label' => 'Imagen Video'], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image']])
->add('packed_colors', null, ['label' => 'Colores Empacados'])
->add('link_mp', null, ['label' => 'Enlace Marketplace'])
->end()
->end()
->tab('Colores')
->with('')
->add('colors', CollectionType::class, array(
'by_reference' => false,
'label' => 'Colores',
), array(
'edit' => 'inline',
'inline' => 'table',
'order' => 'ASC'
))
->end()
->end()
->tab('Filtros')
->with('')
->add('filters', CollectionType::class, array(
'by_reference' => false,
'label' => 'Filtros',
), array(
'edit' => 'inline',
'inline' => 'table',
//'sortable' => 'position',
'order' => 'ASC'
))
->end()
->end()
->tab('Aplicación')
->with('')
->add('conditions', null, ['label' => 'Colores'])
->add('dilution', null, ['label' => 'Diluyente'])
->add('tools', null, ['label' => 'Aplicación'])
->add('layers', null, ['label' => 'Rendimiento'])
->end()
->end()
->tab('Secado')
->with('')
->add('touch_drying', null, ['label' => 'Formato'])
->add('repaint_drying', null, ['label' => 'Tipo de superficie'])
->add('final_drying', null, ['label' => 'Terminación'])
->add('drying_time', null, ['label' => 'Tiempo de Secado'])
->end()
->end()
->tab('Documentos')
->with('')
->add('data_sheet', null, ['label' => 'Ficha técnica'])
->add('safety_sheet', null, ['label' => 'Hoja de Seguridad'])
->add('safety_sheet_cb', null, ['label' => 'Hoja de Seguridad C/B'])
->add('transport_sheet', null, ['label' => 'Hoja de Transporte'])
->end()
->end()
;
if ($this->isCurrentRoute('edit')) {
$formMapper
->tab('Seo')
->with('')
->add('seo.title', null, ['label' => 'Titulo'])
->add('seo.keywords', null, ['label' => 'Palabras claves'])
->add('seo.description', TextareaType::class, ['label' => 'Descripción', 'required' => false])
->add('seo.share_image', ModelListType::class, ['label' => 'Imagen para compartir', 'required' => false], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image',]])
->end()
->end();
}
}
protected function configureShowFields(ShowMapper $showMapper): void
{
$showMapper
->add('id')
->add('name', null, ['label' => 'Nombre'])
->add('create_at', null, ['label' => 'Creado el']);
}
/*public function getExportFields()
{
return array(
'Nombre' => 'name',
'Acción' => 'action',
'Usuario' => 'user',
'Categoría' => 'kind',
'Creado el' => 'create_at',
);
}*/
public function prePersist($entity): void
{
$em = $this->entityManager;
$seo = new Seo();
$seo->setTitle($entity->getName());
$em->persist($seo);
$em->flush($seo);
$entity->setSeo($seo);
}
}