src/AdminBundle/Admin/Vidi/CatalogBannerAdmin.php line 16

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin\Vidi;
  3. use AdminBundle\Admin\BaseAdmin;
  4. use PortalBundle\Entity\CatalogBanner;
  5. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  6. use Sonata\AdminBundle\Datagrid\ListMapper;
  7. use Sonata\AdminBundle\Form\FormMapper;
  8. use Sonata\Form\Validator\ErrorElement;
  9. use Sonata\MediaBundle\Form\Type\MediaType;
  10. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  11. use Symfony\Component\Form\FormError;
  12. class CatalogBannerAdmin extends BaseAdmin
  13. {
  14.     /**
  15.      * @param DatagridMapper $datagridMapper
  16.      * @return void
  17.      */
  18.     /**
  19.      * @param FormMapper $formMapper
  20.      */
  21.     protected function configureFormFields(FormMapper $formMapper): void
  22.     {
  23.         $formMapper
  24.             ->with('Контент', ['class' => 'col-lg-12'])
  25.             ->add('state'CheckboxType::class, ['label' => 'Відображати на сайті','required' => false])
  26.             ->add('modal'CheckboxType::class, ['label' => 'Модальне вікно','required' => false])
  27.             ->add('urn',null, [
  28.                 'label' => 'URN (Uniform Resource Name)',
  29.                 'attr' => ['placeholder' => '/new-car/honda/'],
  30.             ])
  31.             ->add('btn_link',null, ['label' => 'Посилання банера'])
  32.             ->add('name',null, [
  33.                 'label' => 'Назва',
  34.                 'required' => true,
  35.                 'attr' => ['placeholder' => 'Honda CR-V HYBRID']
  36.             ])
  37.             ->end()
  38.             ->with('Зображення для UA', ['class' => 'col-lg-6'])
  39.             ->add('image_ua'MediaType::class, [
  40.                 'label' => 'Зображення UA (1310x188px)',
  41.                 'required' => true,
  42.                 'provider' => 'sonata.media.provider.image',
  43.                 'context'  => 'dc_site'
  44.             ])
  45.             ->add('image_mobile_ua'MediaType::class, [
  46.                 'label' => 'Зображення UA для мобільних пристроїв (400x400px)',
  47.                 'required' => true,
  48.                 'provider' => 'sonata.media.provider.image',
  49.                 'context'  => 'dc_site'
  50.             ])
  51.             ->end()
  52.             ->with('Зображення для RU', ['class' => 'col-lg-6'])
  53.             ->add('image_ru'MediaType::class, [
  54.                 'label' => 'Зображення RU (1310x188px)',
  55.                 'required' => true,
  56.                 'provider' => 'sonata.media.provider.image',
  57.                 'context'  => 'dc_site'
  58.             ])
  59.             ->add('image_mobile_ru'MediaType::class, [
  60.                 'label' => 'Зображення RU для мобільних пристроїв (400x400px)',
  61.                 'required' => true,
  62.                 'provider' => 'sonata.media.provider.image',
  63.                 'context'  => 'dc_site'
  64.             ])
  65.             ->end();
  66.     }
  67.     /**
  68.      * @param ListMapper $listMapper
  69.      */
  70.     protected function configureListFields(ListMapper $listMapper): void
  71.     {
  72.         $listMapper->addIdentifier('id')
  73.             ->add('name',null, ['label' => 'Название'])
  74.             ->add('urn',null, ['label' => 'URN (Uniform Resource Name)'])
  75.             ->add('_action''actions', [
  76.                 'label' => 'Действия',
  77.                 'actions' => [
  78.                     'edit' => [],
  79.                 ]
  80.             ])
  81.         ;
  82.     }
  83.     /**
  84.      * @param ErrorElement $errorElement
  85.      * @param CatalogBanner $object
  86.      */
  87.     public function validate(ErrorElement $errorElement$object)
  88.     {
  89.         parent::validate($errorElement$object);
  90.         $imageMobileUa $object->getImageMobileUa();
  91.         $imageMobileRu $object->getImageMobileRu();
  92.         $imageDesktopUa $object->getImageUa();
  93.         $imageDesktopRu $object->getImageRu();
  94.         if ($imageMobileUa || $imageMobileRu) {
  95.             if ($imageMobileUa->getWidth() != 400 || $imageMobileUa->getHeight() != 400) {
  96.                 $this->getForm()->addError(new FormError('Мобильное изображение, должно быть размером 400px*400px'));
  97.             }
  98.         }
  99.         if ($imageDesktopUa || $imageDesktopRu) {
  100.             if ($imageDesktopUa->getWidth() != 1310 || $imageDesktopUa->getHeight() != 188) {
  101.                 $this->getForm()->addError(new FormError('Не вірний розмір зображення. Завантажте зображення в розмірі 1310px*188px'));
  102.             }
  103.         }
  104.     }
  105. }