src/AdminBundle/Admin/Service/JobAdmin.php line 14

Open in your IDE?
  1. <?php
  2. namespace AdminBundle\Admin\Service;
  3. use Sonata\AdminBundle\Datagrid\ProxyQueryInterface;
  4. use Sonata\AdminBundle\Admin\AbstractAdmin;
  5. use Sonata\AdminBundle\Datagrid\ListMapper;
  6. use Sonata\AdminBundle\Form\FormMapper;
  7. use Sonata\AdminBundle\Route\RouteCollectionInterface;
  8. use Symfony\Component\Finder\Exception\AccessDeniedException;
  9. use Symfony\Component\Security\Core\Security;
  10. class JobAdmin extends AbstractAdmin
  11. {
  12.     protected Security $security;
  13.     public function setContainerServices(Security $security): void
  14.     {
  15.         $this->security $security;
  16.     }
  17.     public function prePersist($object): void
  18.     {
  19.         $this->prePare($object);
  20.     }
  21.     public function preUpdate($object): void
  22.     {
  23.         $this->prePare($object);
  24.         parent::preUpdate($object);
  25.     }
  26.     private function prePare($object) {
  27.         $user $this->security->getUser();
  28.         $dealer $user->getDealer();
  29.         if(!$dealer) {
  30.             throw new AccessDeniedException();
  31.         }
  32.         $object->setDealer($dealer);
  33.     }
  34.     /**
  35.      * @param RouteCollectionInterface $collection
  36.      */
  37.     protected function configureRoutes(RouteCollectionInterface $collection): void
  38.     {
  39.         $collection->remove('view');
  40.     }
  41.     /**
  42.      * @param FormMapper $formMapper
  43.      */
  44.     protected function configureFormFields(FormMapper $formMapper): void
  45.     {
  46.         $formMapper
  47.             ->with('Контент', ['class' => 'col-lg-6'])
  48.                 ->add('name_ru',null, ['label' => 'Название RU'])
  49.                 ->add('name_ua',null, ['label' => 'Название UA'])
  50.             ->end()
  51.         ;
  52.     }
  53.     /**
  54.      * @param string $context
  55.      * @return ProxyQueryInterface
  56.      */
  57.     public function configureQuery($context 'list'): ProxyQueryInterface
  58.     {
  59.         $user $this->security->getUser();
  60.         $query parent::configureQuery($context);
  61.         $dealer $user->getDealer();
  62.         if(!$dealer) {
  63.             throw new AccessDeniedException();
  64.         }
  65.         $query->andWhere(
  66.             $query->expr()->eq($query->getRootAliases()[0].'.dealer',':dealer')
  67.         );
  68.         $query->setParameter('dealer'$dealer->getId());
  69.         return $query;
  70.     }
  71.     /**
  72.      * @param ListMapper $listMapper
  73.      */
  74.     protected function configureListFields(ListMapper $listMapper): void
  75.     {
  76.         $listMapper->addIdentifier('id')
  77.             ->add('name_ru',null, ['label' => 'Название RU'])
  78.             ->add('name_ua',null, ['label' => 'Название UA'])
  79.             ->add('_action''actions', [
  80.                 'label' => 'Действия',
  81.                 'actions' => [
  82.                     'edit' => [],
  83.                 ]
  84.             ])
  85.         ;
  86.     }
  87. }