src/AdminBundle/Admin/Insurance/InformationDocumentAdmin.php line 14

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin\Insurance;
  3. use AdminBundle\Admin\BaseAdmin;
  4. use FOS\CKEditorBundle\Form\Type\CKEditorType;
  5. use InsuranceBundle\Entity\InformationDocumentCategory;
  6. use Sonata\AdminBundle\Datagrid\ListMapper;
  7. use Sonata\AdminBundle\Form\FormMapper;
  8. use Sonata\AdminBundle\Form\Type\ModelType;
  9. use Sonata\MediaBundle\Form\Type\MediaType;
  10. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  11. class InformationDocumentAdmin extends BaseAdmin
  12. {
  13.     public function prePersist($object): void
  14.     {
  15.         $url $object->getUrl() ?: $object->getTitle();
  16.         $object->setUrl($this->slugify($url));
  17.         parent::prePersist($object);
  18.     }
  19.     public function preUpdate($object): void
  20.     {
  21.         $url $object->getUrl() ?: $object->getTitle();
  22.         $object->setUrl($this->slugify($url));;
  23.         parent::preUpdate($object);
  24.     }
  25.     public function getInformationDocumentCategory()
  26.     {
  27.         return $this->getModelManager()
  28.             ->getEntityManager(InformationDocumentCategory::class)
  29.             ->createQueryBuilder('cp')
  30.             ->select('cp')
  31.             ->from('InsuranceBundle:InformationDocumentCategory''cp');
  32.     }
  33.     protected function configureListFields(ListMapper $list): void
  34.     {
  35.         $list->addIdentifier('id')
  36.             ->add('title'null, ['label' => 'Заголовок'])
  37.             ->add('_action''actions', [
  38.                 'label' => 'Дії',
  39.                 'actions' => [
  40.                     'edit' => [],
  41.                 ]
  42.             ])
  43.             ->add('categories'EntityType::class, [
  44.                 'class' => InformationDocumentCategory::class,
  45.                 'label' => 'Подкатегория документа',
  46.             ]);
  47.     }
  48.     protected function configureFormFields(FormMapper $form): void
  49.     {
  50.         $queryBuilderParentCategory $this->getModelManager()
  51.             ->getEntityManager(InformationDocumentCategory::class)
  52.             ->createQueryBuilder('spc')
  53.             ->select('spc')
  54.             ->from(InformationDocumentCategory::class,'spc')
  55.             ->where('spc.parent_category is not null');
  56.         $form
  57.             ->with('Новый Информационный документ', ['class' => 'col-lg-6'])
  58.             ->add('title'null, ['label' => 'Название''required' => true])
  59.             ->add('expanded_view'null, ['label' => 'Показывать в развернутом виде?'])
  60.             ->add('archive'null, ['label' => 'Архив'])
  61.             ->add('expanded_view_content'CKEditorType::class, [
  62.                 'config_name' => 'default',
  63.                 'label' => 'Контент',
  64.                 'config' => [],
  65.             ])
  66.             ->add('categories'ModelType::class, [
  67.                 'label' => 'Подкатегория поста',
  68.                 'query' => $queryBuilderParentCategory,
  69.                 'btn_add' => false,
  70.                 'required' => true,
  71.                 'multiple' => true,
  72.             ])
  73.             ->add('file'MediaType::class, [
  74.                 'label' => 'Файл',
  75.                 'provider' => 'sonata.media.provider.file',
  76.                 'context' => 'insurance'
  77.             ])
  78.             ->end()
  79.             ->end();
  80.     }
  81. }