<?php
namespace AdminBundle\Admin\DCAutoSite;
use AdminBundle\Admin\BaseAdmin;
use AdminBundle\Form\Type\ContentType;
use DcSiteBundle\Entity\AccessoriesCategory;
use DcSiteBundle\Entity\AccessoriesCategoryContent;
use Sonata\AdminBundle\Form\Type\ModelType;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Route\RouteCollectionInterface;
use Sonata\MediaBundle\Form\Type\MediaType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
class AccessoriesCategoryAdmin extends BaseAdmin
{
/**
* @param RouteCollectionInterface $collection
*/
protected function configureRoutes(RouteCollectionInterface $collection): void
{
$collection->remove('view');
$collection->remove('delete');
}
/**
* @param AccessoriesCategory $object
*/
public function prePersist($object): void
{
/** @var AccessoriesCategoryContent $content */
foreach ($object->getContent() as $content) {
$content->setCategory($object);
}
$this->preSave($object);
$object->setState(1);
}
public function preUpdate($object): void
{
parent::preUpdate($object);
}
private function preSave($object) {
}
/**
* @param FormMapper $formMapper
*/
protected function configureFormFields(FormMapper $formMapper): void
{
$User = $this->security->getUser();
$queryBuilder = $this->getModelManager()
->getEntityManager(AccessoriesCategory::class)
->createQueryBuilder('ag')
->select('ag')
->from(AccessoriesCategory::class,'ag')
->where('ag.parent_category is null');
$formMapper
->tab('Основная информация NEW')
->with('Контент', ['class' => 'col-lg-6'])
->add('content', ContentType::class, ['label' => false], [
'edit' => 'inline',
'sortable' => 'position',
'admin_code' => 'admin.dc.accessories_category_content',
])
->end()
->with('Доп. Информация', ['class' => 'col-lg-6'])
->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',
'required' => true,
])
->add('state', CheckboxType::class, ['label' => 'Отображать на сайте', 'required' => false])
->add('position', null, ['label' => 'Позиция'])
->end()
->end()
;
}
/**
* @param ListMapper $listMapper
*/
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper->addIdentifier('id')
->add('name_category',null, ['label' => 'Группа '])
->add('parent_category.name_category',null, ['label' => 'Родительская группа'])
->add('position', null, ['label' => 'Позиция'])
->add('_action', 'actions', [
'actions' => [
'edit' => [],
]
]);
}
}