src/AdminBundle/Admin/SeoMetaTagAdmin.php line 20

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin;
  3. use DcSiteBundle\Form\Transformer\SeoArrayToStringTransformer;
  4. use FOS\CKEditorBundle\Form\Type\CKEditorType;
  5. use Sonata\AdminBundle\Admin\AbstractAdmin;
  6. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  7. use Sonata\AdminBundle\Datagrid\ListMapper;
  8. use Sonata\AdminBundle\Form\FormMapper;
  9. use Sonata\AdminBundle\Route\RouteCollectionInterface;
  10. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  11. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  12. /**
  13.  * Class SeoMetaTagAdmin
  14.  * @package AdminBundle\Admin
  15.  */
  16. class SeoMetaTagAdmin extends AbstractAdmin
  17. {
  18.     /**
  19.      * @param RouteCollectionInterface $collection
  20.      */
  21.     protected function configureRoutes(RouteCollectionInterface $collection): void
  22.     {
  23.         $collection->add('cloneSeoMetaTag'$this->getRouterIdParameter().'/clone');
  24.         $collection->add('import');
  25.     }
  26.     /**
  27.      * @param object $object
  28.      */
  29.     public function prePersist($object): void
  30.     {
  31.         $urn $object->getUrn();
  32.         $urn preg_replace('/^(\/?ua\/|\/?ru\/)/''/'$urn);
  33.         $object->setUrn($urn);
  34.     }
  35.     /**
  36.      * @param object $object
  37.      */
  38.     public function preUpdate($object): void
  39.     {
  40.         $urn $object->getUrn();
  41.         $urn preg_replace('/^(\/?ua\/|\/?ru\/)/''/'$urn);
  42.         $object->setUrn($urn);
  43.         parent::preUpdate($object);
  44.     }
  45.     protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
  46.     {
  47.         $datagridMapper->add('urn');
  48.     }
  49.     /**
  50.      * @param array $buttonList
  51.      * @param string $action
  52.      * @param null $object
  53.      * @return array
  54.      */
  55.     public function configureActionButtons(array $buttonListstring $action$object null): array
  56.     {
  57.         $list parent::configureActionButtons($buttonList$action$object);
  58.         $list['import']['template'] = '@AdminBundle/admin/import_dashboard_button.html.twig';
  59.         return $list;
  60.     }
  61.     /**
  62.      * @param FormMapper $formMapper
  63.      */
  64.     protected function configureFormFields(FormMapper $formMapper): void
  65.     {
  66.         $formMapper
  67.             ->with('Контент', ['class' => 'col-lg-6'])
  68.                 ->add('state'CheckboxType::class, ['label' => 'Отображать на сайте','required' => false])
  69.                 ->add('domain',null, ['label' => 'Доменное имя'])
  70.                 ->add('urn',null, ['label' => ' URN (Uniform Resource Name)'])
  71.                 ->add('title_ua',null, ['label' => 'Название UA''required' => false])
  72.                 ->add('title_ru',null, ['label' => 'Название RU'])
  73.                 ->add('description_ua',null, ['label' => 'Описание UA'])
  74.                 ->add('description_ru',null, ['label' => 'Описание RU'])
  75.                 ->add('h1_ua',null, ['label' => 'Заголовок(h1) UA'])
  76.                 ->add('h1_ru',null, ['label' => 'Заголовок(h1) RU'])
  77.                 ->add('description_all_ua'CKEditorType::class, ['label' => 'Полное описание UA','config_name' => 'default','required' => false])
  78.                 ->add('description_all_ru'CKEditorType::class, ['label' => 'Полное описание RU','config_name' => 'default','required' => false])
  79.                 ->add('robots',ChoiceType::class, [
  80.                     'choices' => [
  81.                         'index' => 'index',
  82.                         'noindex' => 'noindex',
  83.                         'follow' => 'follow',
  84.                         'nofollow' => 'nofollow',
  85.                     ],
  86.                     'expanded' => true,
  87.                     'multiple' => true,
  88.                 ])
  89.             ->end()
  90.         ;
  91.         $formMapper->get('robots')->addModelTransformer(new SeoArrayToStringTransformer());
  92.     }
  93.     /**
  94.      * @param ListMapper $listMapper
  95.      */
  96.     protected function configureListFields(ListMapper $listMapper): void
  97.     {
  98.         $listMapper->addIdentifier('id')
  99.             ->add('domain',null, ['label' => 'Доменное имя'])
  100.             ->add('urn',null, ['label' => 'URN (Uniform Resource Name)'])
  101.             ->add('title_ru',null, ['label' => 'Название'])
  102.             ->add('_action''actions', [
  103.                 'label' => 'Действия',
  104.                 'actions' => [
  105.                     'edit' => [],
  106.                     'delete' => [],
  107.                 ]
  108.             ])
  109.         ;
  110.     }
  111. }