vendor/easycorp/easyadmin-bundle/src/Factory/FormFactory.php line 37

Open in your IDE?
  1. <?php
  2. namespace EasyCorp\Bundle\EasyAdminBundle\Factory;
  3. use EasyCorp\Bundle\EasyAdminBundle\Collection\FilterCollection;
  4. use EasyCorp\Bundle\EasyAdminBundle\Config\KeyValueStore;
  5. use EasyCorp\Bundle\EasyAdminBundle\Config\Option\EA;
  6. use EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext;
  7. use EasyCorp\Bundle\EasyAdminBundle\Dto\EntityDto;
  8. use EasyCorp\Bundle\EasyAdminBundle\Form\Type\CrudFormType;
  9. use EasyCorp\Bundle\EasyAdminBundle\Form\Type\FiltersFormType;
  10. use Symfony\Component\Form\FormBuilderInterface;
  11. use Symfony\Component\Form\FormFactoryInterface;
  12. use Symfony\Component\Form\FormInterface;
  13. use Symfony\Component\HttpFoundation\Request;
  14. /**
  15.  * @author Javier Eguiluz <javier.eguiluz@gmail.com>
  16.  */
  17. final class FormFactory
  18. {
  19.     private $symfonyFormFactory;
  20.     public function __construct(FormFactoryInterface $symfonyFormFactory)
  21.     {
  22.         $this->symfonyFormFactory $symfonyFormFactory;
  23.     }
  24.     public function createEditFormBuilder(EntityDto $entityDtoKeyValueStore $formOptionsAdminContext $context): FormBuilderInterface
  25.     {
  26.         $cssClass sprintf('ea-%s-form'$context->getCrud()->getCurrentAction());
  27.         $formOptions->set('attr.class'trim(($formOptions->get('attr.class') ?? '').' '.$cssClass));
  28.         $formOptions->set('attr.id'sprintf('edit-%s-form'$entityDto->getName()));
  29.         $formOptions->set('entityDto'$entityDto);
  30.         $formOptions->setIfNotSet('translation_domain'$context->getI18n()->getTranslationDomain());
  31.         return $this->symfonyFormFactory->createNamedBuilder($entityDto->getName(), CrudFormType::class, $entityDto->getInstance(), $formOptions->all());
  32.     }
  33.     public function createEditForm(EntityDto $entityDtoKeyValueStore $formOptionsAdminContext $context): FormInterface
  34.     {
  35.         return $this->createEditFormBuilder($entityDto$formOptions$context)->getForm();
  36.     }
  37.     public function createNewFormBuilder(EntityDto $entityDtoKeyValueStore $formOptionsAdminContext $context): FormBuilderInterface
  38.     {
  39.         $cssClass sprintf('ea-%s-form'$context->getCrud()->getCurrentAction());
  40.         $formOptions->set('attr.class'trim(($formOptions->get('attr.class') ?? '').' '.$cssClass));
  41.         $formOptions->set('attr.id'sprintf('new-%s-form'$entityDto->getName()));
  42.         $formOptions->set('entityDto'$entityDto);
  43.         $formOptions->setIfNotSet('translation_domain'$context->getI18n()->getTranslationDomain());
  44.         return $this->symfonyFormFactory->createNamedBuilder($entityDto->getName(), CrudFormType::class, $entityDto->getInstance(), $formOptions->all());
  45.     }
  46.     public function createNewForm(EntityDto $entityDtoKeyValueStore $formOptionsAdminContext $context): FormInterface
  47.     {
  48.         return $this->createNewFormBuilder($entityDto$formOptions$context)->getForm();
  49.     }
  50.     public function createFiltersForm(FilterCollection $filtersRequest $request): FormInterface
  51.     {
  52.         $filtersForm $this->symfonyFormFactory->createNamed('filters'FiltersFormType::class, null, [
  53.             'method' => 'GET',
  54.             'action' => $request->query->get(EA::REFERRER''),
  55.             'ea_filters' => $filters,
  56.         ]);
  57.         return $filtersForm->handleRequest($request);
  58.     }
  59. }