src/AdminBundle/Admin/Founders/BiographyAdmin.php line 15

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 Sonata\AdminBundle\Datagrid\ListMapper;
  6. use Sonata\AdminBundle\Form\FormMapper;
  7. use Sonata\MediaBundle\Form\Type\MediaType;
  8. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  9. use Symfony\Component\Form\Extension\Core\Type\NumberType;
  10. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  11. use Symfony\Component\Validator\Constraints\Length;
  12. class BiographyAdmin extends BaseAdmin
  13. {
  14.     public function prePersist($object): void
  15.     {
  16.         $url $object->getUrl() ?: $object->getTitle();
  17.         $object->setUrl($this->slugify($url));
  18.         $object->setState((int) $object->getState());
  19.         parent::prePersist($object);
  20.     }
  21.     public function preUpdate($object): void
  22.     {
  23.         $url $object->getUrl() ?: $object->getTitle();
  24.         $object->setUrl($this->slugify($url));;
  25.         $object->setState((int) $object->getState());
  26.         parent::preUpdate($object);
  27.     }
  28.     protected function configureListFields(ListMapper $list): void
  29.     {
  30.         $list->addIdentifier('id')
  31.             ->add('title'null, ['label' => 'Імя'])
  32.             ->add('subtitle'null, ['label' => 'Посада'])
  33.             ->add('position'null, ['label' => 'Позиция'])
  34.             ->add('state','choice', ['label' => 'Відображати на сайті''editable' => true'choices' => [
  35.                 => 'Да',
  36.                 => 'Нет',
  37.             ]])
  38.             ->add('_action''actions', [
  39.                 'label' => 'Действия',
  40.                 'actions' => [
  41.                     'edit' => []
  42.                 ]
  43.             ]);
  44.     }
  45.     protected function configureFormFields(FormMapper $form): void
  46.     {
  47.         $form
  48.             ->with('Контент', ['class' => 'col-md-6'])
  49.                 ->add('title'null, ['label' => 'І\'мя'])
  50.                 ->add('subtitle'null, ['label' => 'Посада'])
  51.                 ->add('description_shot'CKEditorType::class, ['label' => 'Філософія''required' => false])
  52.                 ->add('philosophy_short'CKEditorType::class, ['label' => 'Коротка філософія (максимум 300 символів)',
  53.                     'required' => false,
  54.                     'attr' => ['maxlength' => 300],
  55.                     'constraints' => [
  56.                         new Length([
  57.                             'max' => 300,
  58.                             'maxMessage' => 'Коротка філософія не може містити більше {{ limit }} символів.'
  59.                         ])
  60.                     ]
  61.                 ])
  62.                 ->add('description'CKEditorType::class, ['label' => 'Біографія''required' => false])
  63.                 ->end()
  64.             ->with('Додатково', ['class' => 'col-md-6'])
  65.                 ->add('state'CheckboxType::class, ['label' => 'Відображати на сайті''required' => false])
  66.                 ->add('image_preview'MediaType::class, [
  67.                     'label' => 'Фото',
  68.                     'provider' => 'sonata.media.provider.image',
  69.                     'context' => 'dc_site'
  70.                 ])
  71.                 ->add('image'MediaType::class, [
  72.                     'label' => 'Зображення',
  73.                     'provider' => 'sonata.media.provider.image',
  74.                     'context'  => 'dc_site'
  75.                 ])
  76.                 ->add('facebook'null, ['label' => 'Facebook''required' => false])
  77.                 ->add('instagram'null, ['label' => 'Instagram''required' => false])
  78.                 ->add('linkedin'null, ['label' => 'LinkedIn''required' => false])
  79.                 ->add('url'null, ['label' => 'URL''required' => false])
  80.                 ->add('seo_title'TextareaType::class, ['label' => 'SEO Title''required' => false])
  81.                 ->add('seo_description'TextareaType::class, ['label' => 'SEO Description''required' => false])
  82.                 ->add('position'NumberType::class, [
  83.                     'label' => 'Порядок виводу',
  84.                     'required' => true,
  85.                 ])
  86.                 ->end()
  87.             ->end();
  88.     }
  89. }