<?php
namespace AdminBundle\Admin\Insurance;
use AdminBundle\Admin\BaseAdmin;
use AdminBundle\Form\Type\ContentType;
use InsuranceBundle\Entity\InformationDocumentCategory;
use InsuranceBundle\Entity\InformationDocumentCategoryContent;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Form\Type\ModelType;
use Sonata\AdminBundle\Route\RouteCollectionInterface;
use Sonata\MediaBundle\Form\Type\MediaType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
class InformationDocumentCategoryAdmin extends BaseAdmin
{
protected function configureRoutes(RouteCollectionInterface $collection): void
{
$collection->remove('view');
$collection->remove('delete');
}
/**
* @param InformationDocumentCategory $object
*/
public function prePersist($object): void
{
/** @var InformationDocumentCategoryContent $content */
foreach ($object->getContent() as $content) {
$content->setCategory($object);
}
$object->setState(1);
}
public function preUpdate($object): void
{
parent::preUpdate($object);
}
protected function configureFormFields(FormMapper $formMapper): void
{
$queryBuilder = $this->getModelManager()
->getEntityManager(InformationDocumentCategory::class)
->createQueryBuilder('spc')
->select('spc')
->from(InformationDocumentCategory::class,'spc')
->where('spc.parent_category is null');
$formMapper
->with('Контент', ['class' => 'col-lg-6'])
->add('content', ContentType::class, ['label' => false], [
'edit' => 'inline',
'sortable' => 'position',
'admin_code' => 'admin.insurance.information_document_category_content'
])
->end()
->with('Доп. информация', ['class' => 'col-lg-6'])
->add('hide', CheckboxType::class, ['label' => 'Скрыть', 'required' => false])
->add('parent_category', ModelType::class, [
'label' => 'Родительская категория',
'query' => $queryBuilder,
'btn_add' => false,
'required' => false,
])
->add('image', MediaType::class, [
'provider' => 'sonata.media.provider.image',
'context' => 'dc_site',
'label' => 'Изображение',
])
->add('url', null, [
'label' => 'URL'
])
->end();
}
/**
* @param ListMapper $listMapper
*/
protected function configureListFields(ListMapper $listMapper): void
{
$queryBuilder = $this->getModelManager()
->getEntityManager(InformationDocumentCategory::class)
->createQueryBuilder('spc')
->select('spc')
->from(InformationDocumentCategory::class,'spc')
->where('spc.parent_category is null');
$models = [];
$models[null] = '';
/** @var InformationDocumentCategory $item */
foreach ($queryBuilder->getQuery()->getResult() as $item) {
$models[$item->getId()] = $item->getContentByLocale()->getTitle();
}
$listMapper->addIdentifier('id')
->add('title',null, ['label' => 'Подкатегория'])
->add('parent_category',null, ['label' => 'Родительская категория'])
->add('_action', 'actions', [
'label' => 'Действия',
'actions' => [
'edit' => [],
]
])
;
}
}