← Back
Editing: PrestataireCrudController.php
<?php namespace App\Controller\Admin; use App\Entity\Prestataire; use App\Form\Admin\AssignProviderToManagerAddressesType; use App\Form\AgencyPrestataireType; use App\Service\Provider\ManagerProviderAssigner; use EasyCorp\Bundle\EasyAdminBundle\Config\Action; use EasyCorp\Bundle\EasyAdminBundle\Config\Actions; use EasyCorp\Bundle\EasyAdminBundle\Config\Crud; use EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext; use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController; use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField; use EasyCorp\Bundle\EasyAdminBundle\Field\CollectionField; use EasyCorp\Bundle\EasyAdminBundle\Provider\FieldProvider; use Symfony\Component\HttpFoundation\Response; class PrestataireCrudController extends AbstractCrudController { public static function getEntityFqcn(): string { return Prestataire::class; } public function configureActions(Actions $actions): Actions { $assignToManagerAddresses = Action::new('assignToManager', 'Assigner aux adresses du manager', 'fa fa-file-assign') ->linkToCrudAction('renderAssignToManager'); return $actions->add(Crud::PAGE_EDIT, $assignToManagerAddresses); } public function configureFields(string $pageName): iterable { $fields = $this->container->get(FieldProvider::class)->getDefaultFields($pageName); $fields[] = CollectionField::new('agencyPrestataires')->setEntryType( AgencyPrestataireType::class )->setEntryIsComplex(true); $fields[] = AssociationField::new('adresses')->setFormTypeOption('by_reference', false); return $fields; } public function renderAssignToManager(AdminContext $adminContext, ManagerProviderAssigner $assigner): Response { $request = $adminContext->getRequest(); $provider = $adminContext->getEntity()->getInstance(); $defaults = ['provider' => $provider]; $form = $this->createForm(AssignProviderToManagerAddressesType::class, $defaults); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); $assigner($provider, $data['manager']); $this->addFlash('success', 'Le prestataire a bien été assigné aux adresses du manager'); } return $this->render('admin/assign_provider_to_manager_addresses.html.twig', ['form' => $form->createView()]); } }
Save File
Cancel