← Back
Editing: ItemCrudController.php
<?php namespace App\Controller\Admin; use App\Entity\Item; use App\Enum\NotationType; use App\Service\SolutionService; use Doctrine\ORM\QueryBuilder; use EasyCorp\Bundle\EasyAdminBundle\Collection\FieldCollection; use EasyCorp\Bundle\EasyAdminBundle\Collection\FilterCollection; use EasyCorp\Bundle\EasyAdminBundle\Config\Filters; use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController; use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto; use EasyCorp\Bundle\EasyAdminBundle\Dto\SearchDto; use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField; use EasyCorp\Bundle\EasyAdminBundle\Field\BooleanField; use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField; use EasyCorp\Bundle\EasyAdminBundle\Field\IdField; use EasyCorp\Bundle\EasyAdminBundle\Field\TextField; use EasyCorp\Bundle\EasyAdminBundle\Orm\EntityRepository; use Symfony\Component\Form\Extension\Core\Type\EnumType; class ItemCrudController extends AbstractCrudController { private SolutionService $solutionService; public function __construct(SolutionService $solutionService) { $this->solutionService = $solutionService; } public static function getEntityFqcn(): string { return Item::class; } public function configureFilters(Filters $filters): Filters { return $filters ->add('zone'); } public function configureFields(string $pageName): iterable { yield IdField::new('id')->hideOnForm(); yield TextField::new('nom'); yield AssociationField::new('zone'); yield ChoiceField::new('notationType') ->setChoices( array_reduce( NotationType::cases(), static fn (array $choices, NotationType $type) => $choices + [$type->label() => $type->value], [], ) ) ->onlyOnIndex(); yield ChoiceField::new('notationType') ->setFormType(EnumType::class) ->setFormTypeOption('class', NotationType::class) ->setFormTypeOption('choice_label', fn ($choice) => $choice->label()) ->setFormTypeOption('choices', NotationType::cases()) ->onlyOnForms(); yield BooleanField::new('assignToProvider'); yield BooleanField::new('addToExistingAddresses', 'Ajouter aux adresses existantes') ->renderAsSwitch() ->setVirtual(true) ->onlyWhenCreating(); } public function createIndexQueryBuilder( SearchDto $searchDto, EntityDto $entityDto, FieldCollection $fields, FilterCollection $filters ): QueryBuilder { $qb = $this->container->get(EntityRepository::class)->createQueryBuilder( $searchDto, $entityDto, $fields, $filters ); $qb->leftJoin('entity.zone', 'z') ->leftJoin('z.root', 'zr') ->leftJoin('zr.thematic', 't') ->andWhere('t.solution = :solution') ->setParameter('solution', $this->solutionService->getCurrent()); return $qb; } }
Save File
Cancel