<?php
namespace AdminBundle\Admin\Insurance;
use AdminBundle\Admin\BaseAdmin;
use FOS\CKEditorBundle\Form\Type\CKEditorType;
use InsuranceBundle\Entity\InformationDocumentCategory;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Form\Type\ModelType;
use Sonata\MediaBundle\Form\Type\MediaType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
class InformationDocumentAdmin extends BaseAdmin
{
public function prePersist($object): void
{
$url = $object->getUrl() ?: $object->getTitle();
$object->setUrl($this->slugify($url));
parent::prePersist($object);
}
public function preUpdate($object): void
{
$url = $object->getUrl() ?: $object->getTitle();
$object->setUrl($this->slugify($url));;
parent::preUpdate($object);
}
public function getInformationDocumentCategory()
{
return $this->getModelManager()
->getEntityManager(InformationDocumentCategory::class)
->createQueryBuilder('cp')
->select('cp')
->from('InsuranceBundle:InformationDocumentCategory', 'cp');
}
protected function configureListFields(ListMapper $list): void
{
$list->addIdentifier('id')
->add('title', null, ['label' => 'Заголовок'])
->add('_action', 'actions', [
'label' => 'Дії',
'actions' => [
'edit' => [],
]
])
->add('categories', EntityType::class, [
'class' => InformationDocumentCategory::class,
'label' => 'Подкатегория документа',
]);
}
protected function configureFormFields(FormMapper $form): void
{
$queryBuilderParentCategory = $this->getModelManager()
->getEntityManager(InformationDocumentCategory::class)
->createQueryBuilder('spc')
->select('spc')
->from(InformationDocumentCategory::class,'spc')
->where('spc.parent_category is not null');
$form
->with('Новый Информационный документ', ['class' => 'col-lg-6'])
->add('title', null, ['label' => 'Название', 'required' => true])
->add('expanded_view', null, ['label' => 'Показывать в развернутом виде?'])
->add('archive', null, ['label' => 'Архив'])
->add('expanded_view_content', CKEditorType::class, [
'config_name' => 'default',
'label' => 'Контент',
'config' => [],
])
->add('categories', ModelType::class, [
'label' => 'Подкатегория поста',
'query' => $queryBuilderParentCategory,
'btn_add' => false,
'required' => true,
'multiple' => true,
])
->add('file', MediaType::class, [
'label' => 'Файл',
'provider' => 'sonata.media.provider.file',
'context' => 'insurance'
])
->end()
->end();
}
}