<?php
namespace AdminBundle\Admin\Vidi;
use AdminBundle\Admin\BaseAdmin;
use PortalBundle\Entity\CatalogBanner;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\Form\Validator\ErrorElement;
use Sonata\MediaBundle\Form\Type\MediaType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\FormError;
class CatalogBannerAdmin extends BaseAdmin
{
/**
* @param DatagridMapper $datagridMapper
* @return void
*/
/**
* @param FormMapper $formMapper
*/
protected function configureFormFields(FormMapper $formMapper): void
{
$formMapper
->with('Контент', ['class' => 'col-lg-12'])
->add('state', CheckboxType::class, ['label' => 'Відображати на сайті','required' => false])
->add('modal', CheckboxType::class, ['label' => 'Модальне вікно','required' => false])
->add('urn',null, [
'label' => 'URN (Uniform Resource Name)',
'attr' => ['placeholder' => '/new-car/honda/'],
])
->add('btn_link',null, ['label' => 'Посилання банера'])
->add('name',null, [
'label' => 'Назва',
'required' => true,
'attr' => ['placeholder' => 'Honda CR-V HYBRID']
])
->end()
->with('Зображення для UA', ['class' => 'col-lg-6'])
->add('image_ua', MediaType::class, [
'label' => 'Зображення UA (1310x188px)',
'required' => true,
'provider' => 'sonata.media.provider.image',
'context' => 'dc_site'
])
->add('image_mobile_ua', MediaType::class, [
'label' => 'Зображення UA для мобільних пристроїв (400x400px)',
'required' => true,
'provider' => 'sonata.media.provider.image',
'context' => 'dc_site'
])
->end()
->with('Зображення для RU', ['class' => 'col-lg-6'])
->add('image_ru', MediaType::class, [
'label' => 'Зображення RU (1310x188px)',
'required' => true,
'provider' => 'sonata.media.provider.image',
'context' => 'dc_site'
])
->add('image_mobile_ru', MediaType::class, [
'label' => 'Зображення RU для мобільних пристроїв (400x400px)',
'required' => true,
'provider' => 'sonata.media.provider.image',
'context' => 'dc_site'
])
->end();
}
/**
* @param ListMapper $listMapper
*/
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper->addIdentifier('id')
->add('name',null, ['label' => 'Название'])
->add('urn',null, ['label' => 'URN (Uniform Resource Name)'])
->add('_action', 'actions', [
'label' => 'Действия',
'actions' => [
'edit' => [],
]
])
;
}
/**
* @param ErrorElement $errorElement
* @param CatalogBanner $object
*/
public function validate(ErrorElement $errorElement, $object)
{
parent::validate($errorElement, $object);
$imageMobileUa = $object->getImageMobileUa();
$imageMobileRu = $object->getImageMobileRu();
$imageDesktopUa = $object->getImageUa();
$imageDesktopRu = $object->getImageRu();
if ($imageMobileUa || $imageMobileRu) {
if ($imageMobileUa->getWidth() != 400 || $imageMobileUa->getHeight() != 400) {
$this->getForm()->addError(new FormError('Мобильное изображение, должно быть размером 400px*400px'));
}
}
if ($imageDesktopUa || $imageDesktopRu) {
if ($imageDesktopUa->getWidth() != 1310 || $imageDesktopUa->getHeight() != 188) {
$this->getForm()->addError(new FormError('Не вірний розмір зображення. Завантажте зображення в розмірі 1310px*188px'));
}
}
}
}