<?php
declare(strict_types=1);
namespace App\Admin;
use App\Entity\RentalPrice;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Form\Type\ModelType;
use Sonata\AdminBundle\Show\ShowMapper;
use Symfony\Component\Form\Extension\Core\Type\DateType;
final class MotorcycleAdmin extends AbstractAdmin
{
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
{
$datagridMapper
->add('id')
->add('mark')
->add('model')
;
}
protected function configureListFields(ListMapper $listMapper): void
{
$listMapper->add('mark');
$listMapper->add('model');
$listMapper->add('registrationNumber');
$listMapper->add('vinNumber');
$listMapper->add('rentalPrice', null, ['label' => 'Профиль цен']);
$listMapper->add('mileage');
$listMapper->add('issueYear', null, ['template' => 'admin/Motorcycle/list_issue_date.html.twig']);
$listMapper->add('_action', null, [
'actions' => [
'show' => [],
'edit' => [],
'delete' => [],
],
]);
}
protected function configureFormFields(FormMapper $formMapper): void
{
$formMapper->add('mark');
$formMapper->add('model');
$formMapper->add('vinNumber');
$formMapper->add('registrationNumber');
$formMapper->add('issueYear', DateType::class, [
'label' => 'Дата выдачи',
'widget' => 'single_text',
'required' => false,
]);
$formMapper->add('paymentAmount', null, [
'label' => 'Базовая стоимость (paymentAmount, legacy)',
'help' => 'Устаревшее поле. Рекомендуется использовать профили цен ниже.',
]);
$formMapper->add('rentalPrice', ModelType::class, [
'class' => RentalPrice::class,
'btn_add' => true,
'btn_delete' => false,
'btn_list' => true,
'label' => 'Профиль цен аренды',
'help' => 'Выберите (или создайте) набор цен для разных длительностей (1ч, 6ч, сутки и т.д.). Один профиль можно использовать для нескольких мотоциклов.',
'required' => false,
]);
$formMapper->add('color');
}
protected function configureShowFields(ShowMapper $showMapper): void
{
$showMapper
->add('id')
->add('mark')
->add('model')
;
}
}