<?php
namespace AdminBundle\Admin\Vehicles;
use AdminBundle\Admin\BaseAdmin;
use AdminBundle\Form\Type\Vehicle\EditEquipmentType;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Route\RouteCollectionInterface;
use Symfony\Component\Finder\Exception\AccessDeniedException;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
class EquipmentAdmin extends BaseAdmin
{
/**
* @param RouteCollectionInterface $collection
*/
protected function configureRoutes(RouteCollectionInterface $collection): void
{
$collection->remove('delete');
$collection->remove('view');
$collection->add('editOption', $this->getRouterIdParameter() . '/edit_option');
$collection->add('cloneEquipment', $this->getRouterIdParameter() . '/clone');
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper
->add('vehicle.id', null, ['label' => 'id основної машинки'])
->add('vehicle.vin', null, ['label' => 'ВІН'])
->add('vehicle.url', null, ['label' => 'SEO url']);
}
/**
* @param ListMapper $listMapper
*/
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper
->addIdentifier('id')
->add('vehicle.model', null, ['label' => 'Підв\'язано до моделі',])
->add('vehicle.model.brand', null, ['label' => 'Підв\'язано до бренда',])
->add('vehicle.vin', null, ['label' => 'Він машинки',])
->add('vehicle.id', null, ['label' => 'ID машинки',])
->add('_action', 'actions', [
'actions' => [
'edit' => [],
]
]);
}
/**
* @param FormMapper $formMapper
*/
protected function configureFormFields(FormMapper $formMapper): void
{
if (!$this->getUser()->getDealer()) {
throw new AccessDeniedException('User without dealer');
}
$formMapper
->tab('Основная информация')
->with('Данные комплектации', ['class' => 'col-lg-4'])
->add('title', null, ['label' => 'Название комплектации'])
->add('position', NumberType::class, ['label' => 'Позиция'])
->add('state', CheckboxType::class, ['label' => 'Отображать на сайте'])
->add('actions', EditEquipmentType::class, [
'label' => 'Действия',
'mapped' => false,
])
->end()
->end();
}
}