src/AdminBundle/Admin/DCAutoSite/ClientPartnerAdmin.php line 17

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin\DCAutoSite;
  3. use AdminBundle\Admin\BaseAdmin;
  4. use CoreBundle\Entity\User;
  5. use DcSiteBundle\Entity\ClientPartner;
  6. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  7. use Sonata\AdminBundle\Datagrid\ListMapper;
  8. use Sonata\AdminBundle\Form\FormMapper;
  9. use Sonata\MediaBundle\Form\Type\MediaType;
  10. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  11. use Symfony\Component\Form\Extension\Core\Type\TextType;
  12. class ClientPartnerAdmin extends BaseAdmin
  13. {
  14.     /**
  15.      * @param DatagridMapper $datagridMapper
  16.      * @return void
  17.      */
  18.     protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
  19.     {
  20.         $datagridMapper->add('id')
  21.         ->add('title')
  22.         ->add('type');
  23.     }
  24.     protected function configureFormFields(FormMapper $formMapper): void
  25.     {
  26.         $formMapper
  27.             ->with('Контент', ['class' => 'col-lg-6'])
  28.             ->add('title'TextType::class, ['label' => 'Назва'])
  29.             ->add('image'MediaType::class, [
  30.                 'label' => 'Лого',
  31.                 'required' => true,
  32.                 'provider' => 'sonata.media.provider.image',
  33.                 'context' => 'dc_site'
  34.             ])
  35.             ->add('type'ChoiceType::class, ['label' => 'Тип''choices' => [
  36.                 'Клієнт' => ClientPartner::CLIENT_TYPE,
  37.                 'Партнер' => ClientPartner::PARTNER_TYPE,
  38.             ]])
  39.             ->end();
  40.     }
  41.     public function prePersist($object): void
  42.     {
  43.         /** @var User $User */
  44.         $User $this->security->getUser();
  45.         if (!$User->getDealer() && !$object->getDealer()) {
  46.             throw new AccessDeniedException('User without dealer');
  47.         }
  48.         $object->setDealer($User->getDealer());
  49.     }
  50.     /**
  51.      * @param ClientPartner $object
  52.      */
  53.     public function preUpdate($object): void
  54.     {
  55.         $this->updateObject($object);
  56.         parent::preUpdate($object);
  57.     }
  58.     /**
  59.      * @param ClientPartner $object
  60.      */
  61.     private function  updateObject($object) {
  62.         $object->setType($object->getType());
  63.     }
  64.     /**
  65.      * @param ListMapper $list
  66.      * @return void
  67.      */
  68.     protected function configureListFields(ListMapper $list): void
  69.     {
  70.         $list
  71.             ->addIdentifier('id')
  72.             ->add('title'null, ['label' => 'Назва'])
  73.             ->add('image'null, ['label' => 'Картинка'])
  74.             ->add('type''choice', ['label' => 'Тип''editable' => true'choices' => [
  75.                 ClientPartner::CLIENT_TYPE => 'Клієнт',
  76.                 ClientPartner::PARTNER_TYPE => 'Партнер',
  77.             ]])
  78.             ->add('_action''actions', array(
  79.                 'label' => 'Действия',
  80.                 'actions' => array(
  81.                     'edit' => array(),
  82.                     'delete' => array(),
  83.                 )
  84.             ));
  85.     }
  86. }