src/AdminBundle/Admin/Service/BodyRepairCategoryAdmin.php line 16

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin\Service;
  3. use AdminBundle\Admin\BaseAdmin;
  4. use AdminBundle\Form\Type\ContentType;
  5. use CoreBundle\Entity\BodyRepairCategory;
  6. use CoreBundle\Entity\BodyRepairCategoryContent;
  7. use Sonata\AdminBundle\Datagrid\ListMapper;
  8. use Sonata\AdminBundle\Form\FormMapper;
  9. use Sonata\AdminBundle\Form\Type\ModelType;
  10. use Sonata\AdminBundle\Route\RouteCollectionInterface;
  11. use Sonata\MediaBundle\Form\Type\MediaType;
  12. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  13. class BodyRepairCategoryAdmin extends BaseAdmin
  14. {
  15.     protected function configureRoutes(RouteCollectionInterface $collection): void
  16.     {
  17.         $collection->remove('view');
  18.         $collection->remove('delete');
  19.     }
  20.     /**
  21.      * @param BodyRepairCategory $object
  22.      */
  23.     public function prePersist($object): void
  24.     {
  25.         /** @var BodyRepairCategoryContent $content */
  26.         foreach ($object->getContent() as $content) {
  27.             $content->setCategory($object);
  28.         }
  29.         $object->setState(1);
  30.     }
  31.     public function preUpdate($object): void
  32.     {
  33.         parent::preUpdate($object);
  34.     }
  35.     protected function configureFormFields(FormMapper $formMapper): void
  36.     {
  37.         $queryBuilder $this->getModelManager()
  38.             ->getEntityManager(BodyRepairCategory::class)
  39.             ->createQueryBuilder('brc')
  40.             ->select('brc')
  41.             ->from(BodyRepairCategory::class, 'brc')
  42.             ->where('brc.parent_category is null');
  43.         $formMapper
  44.             ->with('Контент', ['class' => 'col-lg-6'])
  45.             ->add('content'ContentType::class, ['label' => false], [
  46.                 'edit' => 'inline',
  47.                 'sortable' => 'position',
  48.                 'admin_code' => 'admin.service.body_repair_category_content',
  49.             ])
  50.             ->end()
  51.             ->with('Доп. информация', ['class' => 'col-lg-6'])
  52.             ->add('parent_category'ModelType::class, [
  53.                 'label' => 'Родительская категория',
  54.                 'query' => $queryBuilder,
  55.                 'btn_add' => false,
  56.                 'required' => false,
  57.             ])
  58.             ->add('image'MediaType::class, [
  59.                 'provider' => 'sonata.media.provider.image',
  60.                 'context' => 'dc_site',
  61.                 'label' => 'Изображение'
  62.             ])
  63.             ->add('url'null, [
  64.                 'label' => 'URL'
  65.             ])
  66.             ->add('price'null, [
  67.                 'label' => 'Цена от'
  68.             ])
  69.             ->add('state'CheckboxType::class, ['label' => 'Отображать на сайте''required' => false])
  70.             ->add('position'null, ['label' => 'Позиция'])
  71.             ->end();
  72.     }
  73.     /**
  74.      * @param ListMapper $listMapper
  75.      */
  76.     protected function configureListFields(ListMapper $listMapper): void
  77.     {
  78.         $listMapper->addIdentifier('id')
  79.             ->add('name_category'null, ['label' => 'Категории сервиса'])
  80.             ->add('parent_category.name_category'null, ['label' => 'Родительская категория'])
  81.             ->add('position'null, ['label' => 'Позиция'])
  82.             ->add('_action''actions', [
  83.                 'label' => 'Действия',
  84.                 'actions' => [
  85.                     'edit' => [],
  86.                 ]
  87.             ]);
  88.     }
  89. }