<?php
namespace AdminBundle\Admin\DCAutoSite;
use AdminBundle\Admin\BaseActionPostAdmin;
use CoreBundle\Entity\Post;
use CoreBundle\Services\Seo\AutomaticSeoGenerationAdmin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
class ActionsAdmin extends BaseActionPostAdmin
{
protected $baseRouteName = 'admin_vendor_adminbundle_dc_actionsadmin';
protected $baseRoutePattern = 'dc-post-action';
protected AutomaticSeoGenerationAdmin $automaticSeoGenerationAdmin;
public function setExtraServices(AutomaticSeoGenerationAdmin $automaticSeoGenerationAdmin)
{
$this->automaticSeoGenerationAdmin = $automaticSeoGenerationAdmin;
}
/**
* @param FormMapper $formMapper
*/
protected function configureFormFields(FormMapper $formMapper): void
{
$formMapper
->tab('Основная информация')
->with(' ', ['class' => 'col-lg-6 without-box-heder'])
->add('state', CheckboxType::class, ['label' => 'Показывать на сайте', 'required' => false])
->add('on_portal', CheckboxType::class, ['label' => 'Показывать на портале', 'required' => false])
->add('action_chapter', ChoiceType::class, ['label' => 'Раздел', 'choices' => [
'Акции сервиса' => \CoreBundle\Model\Post::ACTION_TYPE_SERVICE,
'Акции авто' => \CoreBundle\Model\Post::ACTION_TYPE_CAR,
'Корпоративным клиентам' => \CoreBundle\Model\Post::ACTION_TYPE_CORPORATE,
]])
->end()
->end()
;
parent::configureFormFields($formMapper);
}
/**
* @param ListMapper $listMapper
*/
protected function configureListFields(ListMapper $listMapper): void
{
parent::configureListFields($listMapper);
$listMapper->remove('_action');
$listMapper->add('date_end', null, ['label' => 'Дата окончания акции', 'format' => 'd-m-Y']);
$listMapper->add('action_chapter','choice', ['label' => 'Раздел', 'choices' => [
\CoreBundle\Model\Post::ACTION_TYPE_CAR => 'Акции авто',
\CoreBundle\Model\Post::ACTION_TYPE_SERVICE => 'Акции сервиса',
]])
->add('_action', 'actions', [
'label' => 'Действия',
'actions' => [
'edit' => [],
]
])
;
}
public function preUpdate($object): void
{
$dealer = $object->getDealer();
$this->automaticSeoGenerationAdmin->setUpFields($object,$dealer);
parent::preUpdate($object);
}
/**
* @param Post $object
*/
public function postPersist($object): void
{
$dealer = $object->getDealer();
$this->automaticSeoGenerationAdmin->setUpFields($object,$dealer);
parent::postPersist($object);
}
}