src/AdminBundle/Admin/Portal/MainSliderAdmin.php line 14

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin\Portal;
  3. use PortalBundle\Entity\MainSlider;
  4. use Sonata\AdminBundle\Admin\AbstractAdmin;
  5. use Sonata\AdminBundle\Datagrid\ListMapper;
  6. use Sonata\AdminBundle\Form\FormMapper;
  7. use Sonata\AdminBundle\Route\RouteCollectionInterface;
  8. use Sonata\MediaBundle\Form\Type\MediaType;
  9. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  10. class MainSliderAdmin extends AbstractAdmin
  11. {
  12.     /**
  13.      * @param RouteCollectionInterface $collection
  14.      */
  15.     protected function configureRoutes(RouteCollectionInterface $collection): void
  16.     {
  17.         $collection->remove('view');
  18.         $collection->remove('delete');
  19.     }
  20.     /**
  21.      * @param MainSlider $object
  22.      */
  23.     public function prePersist($object): void
  24.     {
  25.         $this->updateObject($object);
  26.     }
  27.     /**
  28.      * @param $object
  29.      */
  30.     public function preUpdate($object): void
  31.     {
  32.         $this->updateObject($object);
  33.         parent::preUpdate($object);
  34.     }
  35.     /**
  36.      * @param MainSlider $object
  37.      */
  38.     private function  updateObject($object) {
  39.         $object->setState((int) $object->getState());
  40.     }
  41.     /**
  42.      * @param FormMapper $formMapper
  43.      */
  44.     protected function configureFormFields(FormMapper $formMapper): void
  45.     {
  46.         $formMapper
  47.             ->tab('Слайдер на главной')
  48.             ->with('Контент', ['class' => 'col-lg-6'])
  49.             ->add('url'null, ['label' => 'URL'])
  50.             ->add('image'MediaType::class, [
  51.                 'label' => 'Изображение',
  52.                 'required' => true,
  53.                 'provider' => 'sonata.media.provider.image',
  54.                 'context'  => 'dc_site'
  55.             ])
  56.             ->add('state'CheckboxType::class, ['label' => 'Отображать на сайте','required' => false])
  57.             ->end()
  58.             ->end()
  59.         ;
  60.     }
  61.     /**
  62.      * @param ListMapper $listMapper
  63.      */
  64.     protected function configureListFields(ListMapper $listMapper): void
  65.     {
  66.         $listMapper->addIdentifier('id')
  67.             ->add('title_ru',null, ['label' => 'Название'])
  68.             ->add('variation.equipment.model',null, ['label' => 'Модель'])
  69.             ->add('image',null, ['label' => 'Изображение'])
  70.             ->add('state','choice', ['label' => 'Показывать на сайте''editable' => true'choices' => [
  71.                 => 'Да',
  72.                 => 'Нет',
  73.             ]])
  74.             ->add('_action''actions', [
  75.                 'label' => 'Действия',
  76.                 'actions' => [
  77.                     'edit' => [],
  78.                 ]
  79.             ])
  80.         ;
  81.     }
  82. }