src/AdminBundle/Admin/Insurance/InformationDocumentCategoryAdmin.php line 16

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin\Insurance;
  3. use AdminBundle\Admin\BaseAdmin;
  4. use AdminBundle\Form\Type\ContentType;
  5. use InsuranceBundle\Entity\InformationDocumentCategory;
  6. use InsuranceBundle\Entity\InformationDocumentCategoryContent;
  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 InformationDocumentCategoryAdmin extends BaseAdmin
  14. {
  15.     protected function configureRoutes(RouteCollectionInterface $collection): void
  16.     {
  17.         $collection->remove('view');
  18.         $collection->remove('delete');
  19.     }
  20.     /**
  21.      * @param InformationDocumentCategory $object
  22.      */
  23.     public function prePersist($object): void
  24.     {
  25.         /** @var InformationDocumentCategoryContent $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(InformationDocumentCategory::class)
  39.             ->createQueryBuilder('spc')
  40.             ->select('spc')
  41.             ->from(InformationDocumentCategory::class,'spc')
  42.             ->where('spc.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.insurance.information_document_category_content'
  49.             ])
  50.             ->end()
  51.             ->with('Доп. информация', ['class' => 'col-lg-6'])
  52.             ->add('hide'CheckboxType::class, ['label' => 'Скрыть''required' => false])
  53.             ->add('parent_category'ModelType::class, [
  54.                 'label' => 'Родительская категория',
  55.                 'query' => $queryBuilder,
  56.                 'btn_add' => false,
  57.                 'required' => false,
  58.             ])
  59.             ->add('image'MediaType::class, [
  60.                 'provider' => 'sonata.media.provider.image',
  61.                 'context'  => 'dc_site',
  62.                 'label' => 'Изображение',
  63.             ])
  64.             ->add('url'null, [
  65.                 'label' => 'URL'
  66.             ])
  67.             ->end();
  68.     }
  69.     /**
  70.      * @param ListMapper $listMapper
  71.      */
  72.     protected function configureListFields(ListMapper $listMapper): void
  73.     {
  74.         $queryBuilder $this->getModelManager()
  75.             ->getEntityManager(InformationDocumentCategory::class)
  76.             ->createQueryBuilder('spc')
  77.             ->select('spc')
  78.             ->from(InformationDocumentCategory::class,'spc')
  79.             ->where('spc.parent_category is null');
  80.         $models = [];
  81.         $models[null] = '';
  82.         /** @var InformationDocumentCategory $item */
  83.         foreach ($queryBuilder->getQuery()->getResult() as $item) {
  84.             $models[$item->getId()] = $item->getContentByLocale()->getTitle();
  85.         }
  86.         $listMapper->addIdentifier('id')
  87.             ->add('title',null, ['label' => 'Подкатегория'])
  88.             ->add('parent_category',null, ['label' => 'Родительская категория'])
  89.             ->add('_action''actions', [
  90.                 'label' => 'Действия',
  91.                 'actions' => [
  92.                     'edit' => [],
  93.                 ]
  94.             ])
  95.         ;
  96.     }
  97. }