src/AdminBundle/Admin/DCAutoSite/GeneratorAdmin.php line 19

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin\DCAutoSite;
  3. use AdminBundle\Admin\BaseAdmin;
  4. use DcSiteBundle\Model\Generator;
  5. use CoreBundle\Entity\Vehicles\Group;
  6. use FOS\CKEditorBundle\Form\Type\CKEditorType;
  7. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  8. use Sonata\AdminBundle\Form\FormMapper;
  9. use Sonata\AdminBundle\Datagrid\ListMapper;
  10. use Sonata\AdminBundle\Form\Type\ModelListType;
  11. use Sonata\AdminBundle\Route\RouteCollectionInterface;
  12. use Sonata\MediaBundle\Form\Type\MediaType;
  13. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  14. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  15. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  16. class GeneratorAdmin extends BaseAdmin
  17. {
  18.     /**
  19.      * @param RouteCollectionInterface $collection
  20.      */
  21.     protected function configureRoutes(RouteCollectionInterface $collection): void
  22.     {
  23.         $collection->remove('view');
  24.         $collection->remove('delete');
  25.         $collection->add('configurator');
  26.     }
  27.     /**
  28.      * @param ListMapper $listMapper
  29.      */
  30.     public function configureListFields(ListMapper $listMapper): void
  31.     {
  32.         $listMapper
  33.             ->addIdentifier('title_ru'null, ['label' => 'Назва'])
  34.             ->add('price'null, ['label' => 'Ціна(грн)'])
  35.             ->add('dealer'null, ['label' => 'Ділери'])
  36.             ->add('state''choice', ['label' => 'Відображати на сайті''editable' => true'choices' => [
  37.                 => 'Так',
  38.                 => 'Ні',
  39.                 null => 'Ніт',
  40.             ]])
  41.             ->add('_action''actions', [
  42.                 'label' => 'Дія над елементом',
  43.                 'actions' => [
  44.                     'edit' => [],
  45.                 ]
  46.             ]);
  47.     }
  48.     /**
  49.      * @param $object
  50.      */
  51.     public function prePersist($object): void
  52.     {
  53.         $dealer $this->security
  54.             ->getUser()
  55.             ->getDealer();
  56.         $object->setDealer($dealer);
  57.     }
  58.     /**
  59.      * @param FormMapper $formMapper
  60.      */
  61.     public function configureFormFields(FormMapper $formMapper): void
  62.     {
  63.         $formMapper
  64.             ->tab('Основне')
  65.             ->with('Москальська', ['class' => 'col-md-6'])
  66.             ->add('title_ru'null, ['label' => 'Назва RU'])
  67.             ->add('description_ru'TextareaType::class, ['label' => 'Короткий опис RU''required' => false,])
  68.             ->add('content_ru'CKEditorType::class, ['label' => 'Опис RU''required' => false])
  69.             ->end()
  70.             ->with('Украинский', ['class' => 'col-md-6'])
  71.             ->add('title_ua'null, ['label' => 'Назва UA'])
  72.             ->add('description_ua'TextareaType::class, ['label' => 'Короткий опис UA''required' => false,])
  73.             ->add('content_ua'CKEditorType::class, ['label' => 'Опис UA''required' => false])
  74.             ->end()
  75.             ->with('Дополнительно', ['class' => 'col-md-6'])
  76.             ->add('price'null, ['label' => 'Ціна(грн)'])
  77.             ->add('alt_price'null, ['label' => 'Ціна альтернативная'])
  78.             ->add('price_eur'null, ['label' => 'Ціна у валюті (EUR)'])
  79.             ->add('promotional_price_uah'null, ['label' => 'Акційна ціна, грн'])
  80.             ->add('url'null, ['label' => 'URL','required' => true,])
  81.             ->add('rate'null, ['label' => 'Рейтинг'])
  82.             ->add('alt_rate'null, ['label' => 'Рейтинг альтернативний'])
  83.             ->add('state'ChoiceType::class, ['label' => 'Відображати на сайті''choices' => array_flip([
  84.                 => 'Так',
  85.                 => 'Ні',
  86.                 null => 'Ніт',
  87.             ])])
  88.             ->end()
  89.             ->end()
  90.             ->tab('Характеристики')
  91.             ->with('Технічні характеристики', ['class' => 'col-md-6'])
  92.             ->add('group'EntityType::class, [
  93.                 'label' => 'Группа',
  94.                 'required' => true,
  95.                 'class' => Group::class,
  96.                 'choice_label' => fn($group) => $group->getInnerName() .
  97.                     ' (' $group->getTitleByLocale($this->getRequest()->get('locale')) . ')'
  98.             ])
  99.             ->add('type'ChoiceType::class, [
  100.                 'label' => 'Тип',
  101.                 'choices' => array_flip(Generator::getFuelType()),
  102.                 'required' => false,
  103.             ])
  104.             ->add('engine_type'ChoiceType::class, [
  105.                 'label' => 'Тип двигуна',
  106.                 'choices' => array_flip(Generator::getEngineType()),
  107.                 'required' => false,
  108.             ])
  109.             ->add('alternator_type'ChoiceType::class, [
  110.                 'label' => 'Тип альтернатор генератора(синхронний (щітковий) або асинхронний)',
  111.                 'choices' => array_flip(Generator::getAlternatorType()),
  112.                 'required' => false,
  113.             ])
  114.             ->add('engine_volume'null, [
  115.                 'label' => 'Робочий об.єм, куб. см',
  116.                 'required' => false,
  117.             ])
  118.             ->add('engine_power'null, [
  119.                 'label' => 'Максимальна виходна потужність, кВт',
  120.                 'required' => false,
  121.             ])
  122.             ->add('starter_type'ChoiceType::class, [
  123.                 'label' => 'Тип стартера',
  124.                 'choices' => array_flip(Generator::getStarterType()),
  125.                 'required' => false,
  126.             ])
  127.             ->add('frequency'null, [
  128.                 'label' => 'Частота, Гц',
  129.             ])
  130.             ->add('nominal_output_power'null, [
  131.                 'label' => 'Номинальная вихідна потужність, ВА',
  132.                 'required' => false,
  133.             ])
  134.             ->add('max_output_power'null, [
  135.                 'label' => 'Максимальная виходна потужність, ВА',
  136.                 'required' => false,
  137.             ])
  138.             ->add('ac_voltage'null, [
  139.                 'label' => 'Напруга, В',
  140.                 'required' => false,
  141.             ])
  142.             ->add('ac_amperage'null, [
  143.                 'label' => 'Сила струму, А',
  144.                 'required' => false,
  145.             ])
  146.             ->add('phase'ChoiceType::class, [
  147.                 'label' => 'Фази',
  148.                 'choices' => array_flip(Generator::getPhaseCount()),
  149.                 'required' => false,
  150.             ])
  151.             ->add('work_time'null, [
  152.                 'label' => 'Час роботи без дозаправки, ч',
  153.                 'required' => false,
  154.             ])
  155.             ->end()
  156.             ->with('Физические характеристики', ['class' => 'col-md-6'])
  157.             ->add('fuel_tank_capacity'null, [
  158.                 'label' => 'Об\'єм паливного бака, л',
  159.                 'required' => false,
  160.             ])
  161.             ->add('oil_tank_capacity'null, [
  162.                 'label' => 'Об\'єм мастила в двигуні, л',
  163.                 'required' => false,
  164.             ])
  165.             ->add('noise_level'null, [
  166.                 'label' => 'Рівень шуму, дБ',
  167.                 'required' => false,
  168.             ])
  169.             ->add('height'null, [
  170.                 'label' => 'Висота, см',
  171.                 'required' => false,
  172.             ])
  173.             ->add('width'null, [
  174.                 'label' => 'Ширина, см',
  175.                 'required' => false,
  176.             ])
  177.             ->add('length'null, [
  178.                 'label' => 'Довжина, см',
  179.                 'required' => false,
  180.             ])
  181.             ->add('weight'null, [
  182.                 'label' => 'Вес, кг',
  183.                 'required' => false,
  184.             ])
  185.             ->end()
  186.             ->end()
  187.             ->tab('Медиа контент')
  188.             ->with('Зображення', ['class' => 'col-lg-6'])
  189.             ->add('image'MediaType::class, [
  190.                 'label' => 'Основне зображення',
  191.                 'required' => false,
  192.                 'provider' => 'sonata.media.provider.image',
  193.                 'context' => 'dc_site'
  194.             ])
  195.             ->add('preview'MediaType::class, [
  196.                 'label' => 'попередній перегляд',
  197.                 'provider' => 'sonata.media.provider.image',
  198.                 'context' => 'dc_site'
  199.             ])
  200.             ->end()
  201.             ->with('Галерея', ['class' => 'col-lg-6'])
  202.             ->add('gallery'ModelListType::class, [
  203.                 'label' => 'Галерея зображень',
  204.                 'btn_list' => false,
  205.                 'required' => false,
  206.             ], [
  207.                     'edit' => 'inline',
  208.                     'inline' => 'table',
  209.                     'sortable' => 'position',
  210.                     'link_parameters' => [
  211.                         'context' => 'dc_car_gallery',
  212.                         'provider' => 'sonata.media.provider.image'
  213.                     ],
  214.                     'admin_code' => 'sonata.media.admin.gallery',
  215.                 ]
  216.             )
  217.             ->add(
  218.                 'video',
  219.                 ModelListType::class,
  220.                 [
  221.                     'label' => 'Галерея відео',
  222.                     'btn_list' => false,
  223.                     'required' => false,
  224.                 ],
  225.                 [
  226.                     'edit' => 'inline',
  227.                     'inline' => 'table',
  228.                     'sortable' => 'position',
  229.                     'link_parameters' => [
  230.                         'context' => 'dc_car_video',
  231.                         'provider' => 'sonata.media.provider.youtube'
  232.                     ],
  233.                     'admin_code' => 'sonata.media.admin.gallery',
  234.                 ]
  235.             )
  236.             ->end()
  237.             ->end()
  238.             ->tab('SEO')
  239.             ->with('RU', ['class' => 'col-md-6'])
  240.             ->add('seo_title_ru')
  241.             ->add(
  242.                 'seo_description_ru',
  243.                 TextareaType::class,
  244.                 [
  245.                     'label' => 'Seo-description (RU)',
  246.                     'required' => false,
  247.                     'attr' => [
  248.                         'rows' => 10,
  249.                         'cols' => 30,
  250.                     ],
  251.                 ]
  252.             )
  253.             ->end()
  254.             ->with('UA', ['class' => 'col-md-6'])
  255.             ->add('seo_title_ua')
  256.             ->add(
  257.                 'seo_description_ua',
  258.                 TextareaType::class,
  259.                 [
  260.                     'label' => 'Seo-description (UA)',
  261.                     'required' => false,
  262.                     'attr' => [
  263.                         'rows' => 10,
  264.                         'cols' => 30,
  265.                     ],
  266.                 ]
  267.             )
  268.             ->end()
  269.             ->end()
  270.         ;
  271.     }
  272.     /**
  273.      * @param DatagridMapper $datagridMapper
  274.      */
  275.     public function configureDatagridFilters(DatagridMapper $datagridMapper): void
  276.     {
  277.         $datagridMapper
  278.             ->add('title_ru');
  279.     }
  280. }