src/AdminBundle/Admin/Service/PartAdmin.php line 17

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\DatagridMapper;
  6. use Sonata\AdminBundle\Datagrid\ListMapper;
  7. use Sonata\AdminBundle\Form\FormMapper;
  8. use Sonata\AdminBundle\Route\RouteCollection;
  9. use Sonata\AdminBundle\Route\RouteCollectionInterface;
  10. use Symfony\Component\Finder\Exception\AccessDeniedException;
  11. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  12. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  13. use Symfony\Component\Security\Core\Security;
  14. class PartAdmin extends AbstractAdmin
  15. {
  16.     protected Security $security;
  17.     public function setContainerServices(Security $security): void
  18.     {
  19.         $this->security $security;
  20.     }
  21.     /**
  22.      * @param RouteCollection $collection
  23.      */
  24.     protected function configureRoutes(RouteCollectionInterface $collection): void
  25.     {
  26.         $collection->remove('view');
  27.         $collection->remove('create');
  28.     }
  29.     protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
  30.     {
  31.         $datagridMapper->add('id');
  32.         $datagridMapper->add('number'null, ['label' => 'Код']);
  33.         $datagridMapper->add('in_regulation',null, ['label' => 'Учавствует в ТО'], ChoiceType::class, [ 'choices' => [
  34.             'Да' => 1,
  35.             'Нет' => 0,
  36.         ]]);
  37.     }
  38.     public function prePersist($object): void
  39.     {
  40.         $this->prePare($object);
  41.     }
  42.     public function preUpdate($object): void
  43.     {
  44.         $this->prePare($object);
  45.         parent::preUpdate($object);
  46.     }
  47.     private function prePare($object) {
  48.         $object->setInRegulation((int) $object->getInRegulation());
  49.     }
  50.     /**
  51.      * @param FormMapper $formMapper
  52.      */
  53.     protected function configureFormFields(FormMapper $formMapper): void
  54.     {
  55.         $formMapper
  56.             ->add('title',null, ['label' => 'Название 1C'])
  57.             ->add('name_ru',null, ['label' => 'Название публичное RU'])
  58.             ->add('name_ua',null, ['label' => 'Название публичное UA'])
  59.             ->add('price',null, ['label' => 'Цена'])
  60.             ->add('in_regulation',CheckboxType::class, ['label' => 'Учавствует в ТО''required' => false])
  61.         ;
  62.     }
  63.     /**
  64.      * @param string $context
  65.      * @return ProxyQueryInterface
  66.      */
  67.     public function configureQuery($context 'list'): ProxyQueryInterface
  68.     {
  69.         $user $this->security->getUser();
  70.         $query parent::configureQuery($context);
  71.         $dealer $user->getDealer();
  72.         if(!$dealer) {
  73.             throw new AccessDeniedException();
  74.         }
  75.         $query->andWhere(
  76.             $query->expr()->eq($query->getRootAliases()[0].'.dealer',':dealer')
  77.         );
  78.         $query->setParameter('dealer'$dealer->getId());
  79.         return $query;
  80.     }
  81.     /**
  82.      * @param ListMapper $listMapper
  83.      */
  84.     protected function configureListFields(ListMapper $listMapper): void
  85.     {
  86.         $listMapper->addIdentifier('id')
  87.             ->add('number',null, ['label' => 'Код'])
  88.             ->add('title'null, ['label' => 'Название 1С'])
  89.             ->add('count'null, ['label' => 'Остаток'])
  90.             ->add('price',null, ['label' => 'Цена'])
  91.             ->add('in_regulation','choice', ['label' => 'Учавствует в ТО''editable' => true'choices' => [
  92.                 => 'Да',
  93.                 => 'Нет',
  94.             ]])
  95.             ->add('_action''actions', [
  96.                 'label' => 'Действия',
  97.                 'actions' => [
  98.                     'edit' => [],
  99.                 ]
  100.             ])
  101.         ;
  102.     }
  103. }