src/Admin/HomePageAdmin.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\Admin;
  3. use App\Entity\Seo;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use FOS\CKEditorBundle\Form\Type\CKEditorType;
  6. use Sonata\AdminBundle\Admin\AbstractAdmin;
  7. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  8. use Sonata\AdminBundle\Datagrid\ListMapper;
  9. use Sonata\AdminBundle\Form\FormMapper;
  10. use Sonata\AdminBundle\Form\Type\ModelListType;
  11. use Sonata\AdminBundle\Show\ShowMapper;
  12. use Sonata\Form\Type\CollectionType;
  13. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  14. class HomePageAdmin extends AbstractAdmin
  15. {
  16.     protected $datagridValues = array(
  17.         '_page'       => 1,
  18.         '_sort_order' => 'ASC',
  19.         '_sort_by'    => 'id',
  20.     );
  21.     private $entityManager;
  22.     public function __construct(?string $code null, ?string $class null, ?string $baseControllerName nullEntityManagerInterface $entityManager null)
  23.     {
  24.         $this->entityManager $entityManager;
  25.         parent::__construct($code$class$baseControllerName);
  26.     }
  27.     protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
  28.     {
  29.         $datagridMapper
  30.             ->add('name'null, ['label' => 'Nombre']);
  31.     }
  32.     protected function configureListFields(ListMapper $listMapper): void
  33.     {
  34.         $listMapper
  35.             ->add('id')
  36.             ->addIdentifier('name'null, ['label' => 'Nombre'])
  37.             ->addIdentifier('create_at'null, ['label' => 'Creado el']);
  38.     }
  39.     protected function configureFormFields(FormMapper $formMapper): void
  40.     {
  41.         $formMapper
  42.             ->tab('General')
  43.             ->with('')
  44.                 ->add('name'null, ['label' => 'Nombre'])
  45.                 ->add('video'ModelListType::class, ['label' => 'Video'], ['link_parameters' => ['context' => 'video']])
  46.                 ->add('video_image'ModelListType::class, ['label' => 'Video imagen'], ['link_parameters' => ['context' => 'default''provider' => 'sonata.media.provider.image']])
  47.             ->end()
  48.             ->end()
  49.             ->tab('Sliders')
  50.             ->with('')
  51.             ->add('sliders'CollectionType::class, array(
  52.                 'by_reference' => false,
  53.                 'label'        => 'Sliders',
  54.             ),    array(
  55.                       'edit'   => 'inline',
  56.                       'inline' => 'table',
  57.                       'sortable' => 'position',
  58.                       'order'  => 'ASC'
  59.                   ))
  60.             ->end()
  61.             ->end()
  62.             ->tab('Nosotros')
  63.             ->with('')
  64.                 ->add('about_us_description'CKEditorType::class, ['label' => 'Descripción''required' => false])
  65.                 ->add('about_us_image'ModelListType::class, ['label' => 'Imagen'], ['link_parameters' => ['context' => 'default''provider' => 'sonata.media.provider.image']])
  66.             ->end()
  67.             ->end()
  68.             ->tab('Whatsapp')
  69.             ->with('')
  70.                 ->add('wsp_image'ModelListType::class, ['label' => 'Imagen'], ['link_parameters' => ['context' => 'default''provider' => 'sonata.media.provider.image']])
  71.                 ->add('wsp_image_mobile'ModelListType::class, ['label' => 'Imagen Mobile'], ['link_parameters' => ['context' => 'default''provider' => 'sonata.media.provider.image']])
  72.                 ->add('wsp_url'null, ['label' => 'Enlace'])
  73.             ->end()
  74.             ->end()
  75.             ->tab('Comunidad')
  76.             ->with('')
  77.                 ->add('community_link'null, ['label' => 'Link'])
  78.                 ->add('community_banner'ModelListType::class, ['label' => 'Banner'], ['link_parameters' => ['context' => 'default''provider' => 'sonata.media.provider.image']])
  79.                 ->add('community_banner_mobile'ModelListType::class, ['label' => 'Banner Mobile'], ['link_parameters' => ['context' => 'default''provider' => 'sonata.media.provider.image']])
  80.             ->end()
  81.             ->end()
  82.             ->tab('Grandes Obras')
  83.             ->with('')
  84.                 ->add('big_work_image'ModelListType::class, ['label' => 'Imagen'], ['link_parameters' => ['context' => 'default''provider' => 'sonata.media.provider.image']])
  85.                 ->add('big_work_image_mobile'ModelListType::class, ['label' => 'Imagen Mobile'], ['link_parameters' => ['context' => 'default''provider' => 'sonata.media.provider.image']])
  86. //                ->add('big_work_url', null, ['label' => 'Enlace'])
  87.             ->end()
  88.             ->end()
  89.             ->tab('CEAP')
  90.             ->with('')
  91.                 ->add('ceap_image'ModelListType::class, ['label' => 'Imagen'], ['link_parameters' => ['context' => 'default''provider' => 'sonata.media.provider.image']])
  92.                 ->add('ceap_image_mobile'ModelListType::class, ['label' => 'Imagen Mobile'], ['link_parameters' => ['context' => 'default''provider' => 'sonata.media.provider.image']])
  93. //                ->add('big_work_url', null, ['label' => 'Enlace'])
  94.             ->end()
  95.             ->end()
  96.             /*->tab('MarketPlace')
  97.             ->with('')
  98.             ->add('mkp_products', CollectionType::class, array(
  99.                 'by_reference' => false,
  100.                 'label'        => 'Productos',
  101.             ),    array(
  102.                       'edit'   => 'inline',
  103.                       'inline' => 'table',
  104.                       'sortable' => 'position',
  105.                       'order'  => 'ASC'
  106.                   ))
  107.             ->end()
  108.             ->end()
  109.             ->tab('¿Tienes dudas?')
  110.             ->with('')
  111.                 ->add('doubts_url', null, ['label' => 'URL'])
  112.                 ->add('doubts_image', ModelListType::class, ['label' => 'Imagen'], ['link_parameters' => ['context' => 'default', 'provider' => 'sonata.media.provider.image']])
  113.             ->end()
  114.             ->end()*/
  115.             ;
  116.         if ($this->isCurrentRoute('edit')) {
  117.             $formMapper
  118.                 ->tab('Seo')
  119.                 ->with('')
  120.                 ->add('seo.title'null, ['label' => 'Titulo'])
  121.                 ->add('seo.keywords'null, ['label' => 'Palabras claves'])
  122.                 ->add('seo.description'TextareaType::class, ['label' => 'Descripción''required' => false])
  123.                 ->add('seo.share_image'ModelListType::class, ['label' => 'Imagen para compartir''required' => false], ['link_parameters' => ['context' => 'default''provider' => 'sonata.media.provider.image',]])
  124.                 ->end()
  125.                 ->end();
  126.         }
  127.     }
  128.     protected function configureShowFields(ShowMapper $showMapper): void
  129.     {
  130.         $showMapper
  131.             ->add('id')
  132.             ->add('name'null, ['label' => 'Nombre'])
  133.             ->add('create_at'null, ['label' => 'Creado el']);
  134.     }
  135.     /*public function getExportFields()
  136.     {
  137.         return array(
  138.             'Nombre'    => 'name',
  139.             'Acción'    => 'action',
  140.             'Usuario'   => 'user',
  141.             'Categoría' => 'kind',
  142.             'Creado el' => 'create_at',
  143.         );
  144.     }*/
  145.     public function prePersist($entity): void
  146.     {
  147.         $em $this->entityManager;
  148.         $seo = new Seo();
  149.         $seo->setTitle($entity->getName());
  150.         $em->persist($seo);
  151.         $em->flush($seo);
  152.         $entity->setSeo($seo);
  153.     }
  154. }