src/AdminBundle/Admin/Founders/CategorySocialInvestmentsAdmin.php line 16

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin\Founders;
  3. use AdminBundle\Admin\BaseAdmin;
  4. use FOS\CKEditorBundle\Form\Type\CKEditorType;
  5. use FoundersBundle\Entity\CategoryPost;
  6. use Sonata\AdminBundle\Datagrid\ListMapper;
  7. use Sonata\AdminBundle\Form\FormMapper;
  8. use Sonata\MediaBundle\Form\Type\MediaType;
  9. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  10. use Symfony\Component\Form\Extension\Core\Type\NumberType;
  11. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  12. use Symfony\Component\Validator\Constraints\Length;
  13. class CategorySocialInvestmentsAdmin extends BaseAdmin
  14. {
  15.     public function prePersist($object): void
  16.     {
  17.         /** @var CategoryPost $object */
  18.         $url $object->getUrl() ?: $object->getTitle();
  19.         $object->setUrl($this->slugify($url));
  20.         $object->setState((int) $object->getState());
  21.         parent::prePersist($object);
  22.     }
  23.     public function preUpdate($object): void
  24.     {
  25.         $url $object->getUrl() ?: $object->getTitle();
  26.         $object->setUrl($this->slugify($url));
  27.         $object->setState((int) $object->getState());
  28.         parent::preUpdate($object);
  29.     }
  30.     protected function configureListFields(ListMapper $list): void
  31.     {
  32.         $list->addIdentifier('id')
  33.             ->add('title'null, ['label' => 'Заголовок'])
  34.             ->add('position'null, ['label' => 'Позиция'])
  35.             ->add('state','choice', ['label' => 'Показывать на сайте''editable' => true'choices' => [
  36.                 => 'Да',
  37.                 => 'Нет',
  38.             ]])
  39.             ->add('_action''actions', [
  40.                 'label' => 'Действия',
  41.                 'actions' => [
  42.                     'edit' => [],
  43.                 ]
  44.             ]);
  45.     }
  46.     protected function configureFormFields(FormMapper $form): void
  47.     {
  48.         $form->add('title'null, ['label' => 'Заголовок''required' => true,
  49.             'attr' => ['maxlength' => 125],
  50.             'constraints' => [
  51.                 new Length([
  52.                     'max' => 125,
  53.                     'maxMessage' => 'Заголовок не може містити більше {{ limit }} символів.'
  54.                 ])
  55.             ]
  56.         ])
  57.             ->add('position'NumberType::class, [
  58.                 'label' => 'Порядок виводу',
  59.                 'required' => true,
  60.             ])
  61.             ->add('state'CheckboxType::class, ['label' => 'Показувати на сайті''required' => false])
  62.             ->add('source'null, ['label' => 'Джерело статичного контенту',
  63.                 'required' => false,
  64.                 'attr' => ['maxlength' => 125],
  65.                 'constraints' => [
  66.                     new Length([
  67.                         'max' => 125,
  68.                         'maxMessage' => 'Заголовок не може містити більше {{ limit }} символів.'
  69.                     ])
  70.                 ]
  71.             ])
  72.             ->add('image'MediaType::class, [
  73.                 'label' => 'Зображення',
  74.                 'provider' => 'sonata.media.provider.image',
  75.                 'context' => 'dc_site'
  76.             ])
  77.             ->add('description_shot'TextareaType::class, ['label' => 'Заголовок статичного контенту'])
  78.             ->add('description'CKEditorType::class, ['config_name' => 'default''label' => 'Опис статичного контенту'])
  79.             ->add('url'null, [
  80.                 'label' => 'URL'
  81.                 'required' => false
  82.             ])
  83.             ->add('seo_title'TextareaType::class, ['label' => 'SEO Title''required' => false])
  84.             ->add('seo_description'TextareaType::class, ['label' => 'SEO Description''required' => false])
  85.             ->end();
  86.     }
  87. }