From 929081c6280a8cf7268104e847c6f319e9488658 Mon Sep 17 00:00:00 2001 From: Ludek Benedik Date: Mon, 14 Feb 2022 20:58:05 +0100 Subject: [PATCH 01/10] Solve typehint and the Symfony AbstractController deprecations --- .gitignore | 1 + src/Command/MakeAdminMigrationCommand.php | 4 +- src/Controller/AdminControllerTrait.php | 45 +++++++++++-------- src/Controller/EasyAdminController.php | 2 + src/DataCollector/EasyAdminDataCollector.php | 6 +-- .../Compiler/EasyAdminConfigPass.php | 2 +- .../Compiler/EasyAdminFormTypePass.php | 2 +- src/DependencyInjection/Configuration.php | 2 +- .../EasyAdminExtension.php | 8 ++-- src/EasyAdminBundle.php | 2 +- src/Exception/BaseException.php | 2 +- .../ChoiceList/Loader/DynamicChoiceLoader.php | 3 +- .../StringToFileTransformer.php | 4 +- .../EasyAdminAutocompleteSubscriber.php | 2 +- .../EventListener/EasyAdminTabSubscriber.php | 2 +- src/Form/Extension/EasyAdminExtension.php | 4 +- .../Guesser/DoctrineOrmFilterTypeGuesser.php | 3 +- .../Guesser/MissingDoctrineOrmTypeGuesser.php | 2 +- src/Form/Type/ComparisonType.php | 4 +- src/Form/Type/EasyAdminAutocompleteType.php | 14 +++--- src/Form/Type/EasyAdminDividerType.php | 2 +- src/Form/Type/EasyAdminFiltersFormType.php | 4 +- src/Form/Type/EasyAdminFormType.php | 8 ++-- src/Form/Type/EasyAdminGroupType.php | 2 +- src/Form/Type/EasyAdminSectionType.php | 2 +- src/Form/Type/EasyAdminTabType.php | 2 +- src/Twig/EasyAdminTwigExtension.php | 4 +- 27 files changed, 74 insertions(+), 64 deletions(-) diff --git a/.gitignore b/.gitignore index de622597fd..eb8229d7b2 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ build/ /node_modules/ npm-debug.log yarn-error.log +.idea diff --git a/src/Command/MakeAdminMigrationCommand.php b/src/Command/MakeAdminMigrationCommand.php index e3c52b2c3d..47871902a5 100644 --- a/src/Command/MakeAdminMigrationCommand.php +++ b/src/Command/MakeAdminMigrationCommand.php @@ -29,7 +29,7 @@ public function __construct(ConfigManager $configManager, string $projectDir) $this->projectDir = $projectDir; } - protected function configure() + protected function configure(): void { $this ->setDescription('Exports EasyAdmin 2 config to later migrate it to EasyAdmin 3 config.') @@ -39,7 +39,7 @@ protected function configure() /** * @return int */ - protected function execute(InputInterface $input, OutputInterface $output) + protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); $io->title('EasyAdmin 2 to EasyAdmin 3 Migration Assistant'); diff --git a/src/Controller/AdminControllerTrait.php b/src/Controller/AdminControllerTrait.php index dab2415362..1600122624 100644 --- a/src/Controller/AdminControllerTrait.php +++ b/src/Controller/AdminControllerTrait.php @@ -5,6 +5,7 @@ use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; use Doctrine\ORM\EntityManager; use Doctrine\ORM\QueryBuilder; +use Doctrine\Persistence\ManagerRegistry; use EasyCorp\Bundle\EasyAdminBundle\Event\EasyAdminEvents; use EasyCorp\Bundle\EasyAdminBundle\Exception\EntityRemoveException; use EasyCorp\Bundle\EasyAdminBundle\Exception\ForbiddenActionException; @@ -77,7 +78,7 @@ public function indexAction(Request $request) $id = $this->request->query->get('id'); $entity = $this->request->attributes->get('easyadmin')['item']; $requiredPermission = $this->entity[$action]['item_permission']; - $userHasPermission = $this->get('easyadmin.security.authorization_checker')->isGranted($requiredPermission, $entity); + $userHasPermission = $this->container->get('easyadmin.security.authorization_checker')->isGranted($requiredPermission, $entity); if (false === $userHasPermission) { throw new NoPermissionException(['action' => $action, 'entity_name' => $this->entity['name'], 'entity_id' => $id]); } @@ -99,7 +100,7 @@ protected function initialize(Request $request) { $this->dispatch(EasyAdminEvents::PRE_INITIALIZE); - $this->config = $this->get('easyadmin.config.manager')->getBackendConfig(); + $this->config = $this->container->get('easyadmin.config.manager')->getBackendConfig(); if (0 === \count($this->config['entities'])) { throw new NoEntitiesConfiguredException(); @@ -115,7 +116,7 @@ protected function initialize(Request $request) throw new UndefinedEntityException(['entity_name' => $entityName]); } - $this->entity = $this->get('easyadmin.config.manager')->getEntityConfig($entityName); + $this->entity = $this->container->get('easyadmin.config.manager')->getEntityConfig($entityName); $action = $request->query->get('action', 'list'); if (!$request->query->has('sortField')) { @@ -146,9 +147,9 @@ protected function dispatch($eventName, array $arguments = []) $event = new GenericEvent($subject, $arguments); if (Kernel::VERSION_ID >= 40300) { - $this->get('event_dispatcher')->dispatch($event, $eventName); + $this->container->get('event_dispatcher')->dispatch($event, $eventName); } else { - $this->get('event_dispatcher')->dispatch($eventName, $event); + $this->container->get('event_dispatcher')->dispatch($eventName, $event); } } @@ -160,7 +161,7 @@ protected function dispatch($eventName, array $arguments = []) */ protected function autocompleteAction() { - $results = $this->get('easyadmin.autocomplete')->find( + $results = $this->container->get('easyadmin.autocomplete')->find( $this->request->query->get('entity'), $this->request->query->get('query'), $this->request->query->get('page', 1) @@ -385,7 +386,7 @@ protected function searchAction() $queryParameters = array_replace($this->request->query->all(), ['action' => 'list']); unset($queryParameters['query']); - return $this->redirect($this->get('router')->generate('easyadmin', $queryParameters)); + return $this->redirect($this->container->get('router')->generate('easyadmin', $queryParameters)); } $searchableFields = $this->entity['search']['fields']; @@ -439,7 +440,7 @@ protected function batchAction(): Response protected function createBatchForm(string $entityName): FormInterface { - return $this->get('form.factory')->createNamed('batch_form', EasyAdminBatchFormType::class, null, [ + return $this->container->get('form.factory')->createNamed('batch_form', EasyAdminBatchFormType::class, null, [ 'action' => $this->generateUrl('easyadmin', ['action' => 'batch', 'entity' => $entityName]), 'entity' => $entityName, ]); @@ -500,7 +501,7 @@ protected function filterQueryBuilder(QueryBuilder $queryBuilder): void } /** @var FilterRegistry $filterRegistry */ - $filterRegistry = $this->get('easyadmin.filter.registry'); + $filterRegistry = $this->container->get('easyadmin.filter.registry'); $appliedFilters = []; foreach ($filtersForm as $filterForm) { @@ -532,7 +533,7 @@ protected function filterQueryBuilder(QueryBuilder $queryBuilder): void protected function createFiltersForm(string $entityName): FormInterface { - return $this->get('form.factory')->createNamed('filters', EasyAdminFiltersFormType::class, null, [ + return $this->container->get('form.factory')->createNamed('filters', EasyAdminFiltersFormType::class, null, [ 'method' => 'GET', 'entity' => $entityName, ]); @@ -595,11 +596,11 @@ protected function updateEntityProperty($entity, $property, $value) { $entityConfig = $this->entity; - if (!$this->get('easyadmin.property_accessor')->isWritable($entity, $property)) { + if (!$this->container->get('easyadmin.property_accessor')->isWritable($entity, $property)) { throw new \RuntimeException(sprintf('The "%s" property of the "%s" entity is not writable.', $property, $entityConfig['name'])); } - $this->get('easyadmin.property_accessor')->setValue($entity, $property, $value); + $this->container->get('easyadmin.property_accessor')->setValue($entity, $property, $value); $this->dispatch(EasyAdminEvents::PRE_UPDATE, ['entity' => $entity, 'property' => $property, 'newValue' => $value]); $this->executeDynamicMethod('updateEntity', [$entity]); @@ -687,7 +688,7 @@ protected function findAll($entityClass, $page = 1, $maxPerPage = 15, $sortField 'sort_direction' => $sortDirection, ]); - return $this->get('easyadmin.paginator')->createOrmPaginator($queryBuilder, $page, $maxPerPage); + return $this->container->get('easyadmin.paginator')->createOrmPaginator($queryBuilder, $page, $maxPerPage); } /** @@ -702,7 +703,7 @@ protected function findAll($entityClass, $page = 1, $maxPerPage = 15, $sortField */ protected function createListQueryBuilder($entityClass, $sortDirection, $sortField = null, $dqlFilter = null) { - return $this->get('easyadmin.query_builder')->createListQueryBuilder($this->entity, $sortField, $sortDirection, $dqlFilter); + return $this->container->get('easyadmin.query_builder')->createListQueryBuilder($this->entity, $sortField, $sortDirection, $dqlFilter); } /** @@ -736,7 +737,7 @@ protected function findBy($entityClass, $searchQuery, array $searchableFields, $ 'searchable_fields' => $searchableFields, ]); - return $this->get('easyadmin.paginator')->createOrmPaginator($queryBuilder, $page, $maxPerPage); + return $this->container->get('easyadmin.paginator')->createOrmPaginator($queryBuilder, $page, $maxPerPage); } /** @@ -753,7 +754,7 @@ protected function findBy($entityClass, $searchQuery, array $searchableFields, $ */ protected function createSearchQueryBuilder($entityClass, $searchQuery, array $searchableFields, $sortField = null, $sortDirection = null, $dqlFilter = null) { - return $this->get('easyadmin.query_builder')->createSearchQueryBuilder($this->entity, $searchQuery, $sortField, $sortDirection, $dqlFilter); + return $this->container->get('easyadmin.query_builder')->createSearchQueryBuilder($this->entity, $searchQuery, $sortField, $sortDirection, $dqlFilter); } /** @@ -794,7 +795,7 @@ protected function createEntityFormBuilder($entity, $view) { $formOptions = $this->executeDynamicMethod('getEntityFormOptions', [$entity, $view]); - return $this->get('form.factory')->createNamedBuilder(mb_strtolower($this->entity['name']), EasyAdminFormType::class, $entity, $formOptions); + return $this->container->get('form.factory')->createNamedBuilder(mb_strtolower($this->entity['name']), EasyAdminFormType::class, $entity, $formOptions); } /** @@ -859,7 +860,7 @@ protected function createEntityForm($entity, array $entityProperties, $view) protected function createDeleteForm($entityName, $entityId) { /** @var FormBuilder $formBuilder */ - $formBuilder = $this->get('form.factory')->createNamedBuilder('delete_form') + $formBuilder = $this->container->get('form.factory')->createNamedBuilder('delete_form') ->setAction($this->generateUrl('easyadmin', ['action' => 'delete', 'entity' => $entityName, 'id' => $entityId])) ->setMethod('DELETE') ; @@ -919,7 +920,7 @@ protected function redirectToBackendHomepage() { $homepageConfig = $this->config['homepage']; - $url = $homepageConfig['url'] ?? $this->get('router')->generate($homepageConfig['route'], $homepageConfig['params']); + $url = $homepageConfig['url'] ?? $this->container->get('router')->generate($homepageConfig['route'], $homepageConfig['params']); return $this->redirect($url); } @@ -987,4 +988,10 @@ protected function renderTemplate($actionName, $templatePath, array $parameters { return $this->render($templatePath, $parameters); } + + + protected function getDoctrine(): ManagerRegistry + { + return $this->container->get('doctrine'); + } } diff --git a/src/Controller/EasyAdminController.php b/src/Controller/EasyAdminController.php index f51c2456a0..c0af0bbd0b 100644 --- a/src/Controller/EasyAdminController.php +++ b/src/Controller/EasyAdminController.php @@ -2,6 +2,7 @@ namespace EasyCorp\Bundle\EasyAdminBundle\Controller; +use Doctrine\Persistence\ManagerRegistry; use EasyCorp\Bundle\EasyAdminBundle\Configuration\ConfigManager; use EasyCorp\Bundle\EasyAdminBundle\Form\Filter\FilterRegistry; use EasyCorp\Bundle\EasyAdminBundle\Search\Autocomplete; @@ -32,6 +33,7 @@ public static function getSubscribedServices(): array 'easyadmin.filter.registry' => FilterRegistry::class, 'easyadmin.security.authorization_checker' => AuthorizationChecker::class, 'event_dispatcher' => EventDispatcherInterface::class, + 'doctrine' => ManagerRegistry::class, ]); } } diff --git a/src/DataCollector/EasyAdminDataCollector.php b/src/DataCollector/EasyAdminDataCollector.php index a90daafa60..c520352635 100644 --- a/src/DataCollector/EasyAdminDataCollector.php +++ b/src/DataCollector/EasyAdminDataCollector.php @@ -29,7 +29,7 @@ public function __construct(ConfigManager $configManager) /** * {@inheritdoc} */ - public function reset() + public function reset(): void { $this->data = [ 'num_entities' => 0, @@ -42,7 +42,7 @@ public function reset() /** * {@inheritdoc} */ - public function collect(Request $request, Response $response, \Throwable $exception = null) + public function collect(Request $request, Response $response, \Throwable $exception = null): void { if ('easyadmin' !== $request->attributes->get('_route')) { return; @@ -142,7 +142,7 @@ public function dump($variable) /** * {@inheritdoc} */ - public function getName() + public function getName(): string { return 'easyadmin'; } diff --git a/src/DependencyInjection/Compiler/EasyAdminConfigPass.php b/src/DependencyInjection/Compiler/EasyAdminConfigPass.php index 433b35ea97..52adb953ee 100644 --- a/src/DependencyInjection/Compiler/EasyAdminConfigPass.php +++ b/src/DependencyInjection/Compiler/EasyAdminConfigPass.php @@ -16,7 +16,7 @@ final class EasyAdminConfigPass implements CompilerPassInterface /** * {@inheritdoc} */ - public function process(ContainerBuilder $container) + public function process(ContainerBuilder $container): void { $configPasses = $this->findAndSortTaggedServices('easyadmin.config_pass', $container); $definition = $container->getDefinition('easyadmin.config.manager'); diff --git a/src/DependencyInjection/Compiler/EasyAdminFormTypePass.php b/src/DependencyInjection/Compiler/EasyAdminFormTypePass.php index 95f13e76d1..2566aa91cd 100644 --- a/src/DependencyInjection/Compiler/EasyAdminFormTypePass.php +++ b/src/DependencyInjection/Compiler/EasyAdminFormTypePass.php @@ -15,7 +15,7 @@ class EasyAdminFormTypePass implements CompilerPassInterface /** * {@inheritdoc} */ - public function process(ContainerBuilder $container) + public function process(ContainerBuilder $container): void { $this->registerTypeConfigurators($container); } diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php index f6e93274fa..e6d2d8a906 100644 --- a/src/DependencyInjection/Configuration.php +++ b/src/DependencyInjection/Configuration.php @@ -13,7 +13,7 @@ */ class Configuration implements ConfigurationInterface { - public function getConfigTreeBuilder() + public function getConfigTreeBuilder(): TreeBuilder { $treeBuilder = new TreeBuilder('easy_admin'); $rootNode = $this->getRootNode($treeBuilder, 'easy_admin'); diff --git a/src/DependencyInjection/EasyAdminExtension.php b/src/DependencyInjection/EasyAdminExtension.php index 6240489069..2f8c993aa8 100644 --- a/src/DependencyInjection/EasyAdminExtension.php +++ b/src/DependencyInjection/EasyAdminExtension.php @@ -19,7 +19,7 @@ class EasyAdminExtension extends Extension /** * {@inheritdoc} */ - public function load(array $configs, ContainerBuilder $container) + public function load(array $configs, ContainerBuilder $container): void { // process bundle's configuration parameters $configs = $this->processConfigFiles($configs); @@ -51,7 +51,7 @@ public function load(array $configs, ContainerBuilder $container) * * @return array */ - private function processConfigFiles(array $configs) + private function processConfigFiles(array $configs): array { $existingEntityNames = []; @@ -110,7 +110,7 @@ private function processConfigFiles(array $configs) * * @throws \RuntimeException */ - private function normalizeEntityConfig($entityName, $entityConfig) + private function normalizeEntityConfig($entityName, $entityConfig): array { // normalize config formats #1 and #2 to use the 'class' option as config format #3 if (!\is_array($entityConfig)) { @@ -141,7 +141,7 @@ private function normalizeEntityConfig($entityName, $entityConfig) * * @return string The entity name transformed to be unique */ - private function getUniqueEntityName($entityName, array $entityConfig, array $existingEntityNames) + private function getUniqueEntityName($entityName, array $entityConfig, array $existingEntityNames): string { // the shortcut config syntax doesn't require to give entities a name if (is_numeric($entityName)) { diff --git a/src/EasyAdminBundle.php b/src/EasyAdminBundle.php index 88c5ad69fc..8402fefd9e 100644 --- a/src/EasyAdminBundle.php +++ b/src/EasyAdminBundle.php @@ -16,7 +16,7 @@ class EasyAdminBundle extends Bundle { public const VERSION = '2.3.16-DEV'; - public function build(ContainerBuilder $container) + public function build(ContainerBuilder $container): void { $container->addCompilerPass(new EasyAdminFormTypePass(), PassConfig::TYPE_BEFORE_REMOVING); // this compiler pass must run earlier than FormPass to clear diff --git a/src/Exception/BaseException.php b/src/Exception/BaseException.php index 68513b7597..bc89197c41 100644 --- a/src/Exception/BaseException.php +++ b/src/Exception/BaseException.php @@ -56,7 +56,7 @@ public function getParameters() /** * @return int */ - public function getStatusCode() + public function getStatusCode(): int { return $this->context->getStatusCode(); } diff --git a/src/Form/ChoiceList/Loader/DynamicChoiceLoader.php b/src/Form/ChoiceList/Loader/DynamicChoiceLoader.php index 1cb6ce6891..725baf38c4 100644 --- a/src/Form/ChoiceList/Loader/DynamicChoiceLoader.php +++ b/src/Form/ChoiceList/Loader/DynamicChoiceLoader.php @@ -3,6 +3,7 @@ namespace EasyCorp\Bundle\EasyAdminBundle\Form\ChoiceList\Loader; use Symfony\Component\Form\ChoiceList\ArrayChoiceList; +use Symfony\Component\Form\ChoiceList\ChoiceListInterface; use Symfony\Component\Form\ChoiceList\Loader\ChoiceLoaderInterface; /** @@ -21,7 +22,7 @@ class DynamicChoiceLoader implements ChoiceLoaderInterface /** * {@inheritdoc} */ - public function loadChoiceList($value = null) + public function loadChoiceList($value = null): ChoiceListInterface { if (null === $this->choiceList || !$this->cached) { $this->choiceList = new ArrayChoiceList(array_combine($this->choices, $this->choices)); diff --git a/src/Form/DataTransformer/StringToFileTransformer.php b/src/Form/DataTransformer/StringToFileTransformer.php index caf1d6621c..23a9eb80cb 100644 --- a/src/Form/DataTransformer/StringToFileTransformer.php +++ b/src/Form/DataTransformer/StringToFileTransformer.php @@ -28,7 +28,7 @@ public function __construct(string $uploadDir, callable $uploadFilename, callabl /** * {@inheritdoc} */ - public function transform($value) + public function transform($value): mixed { if (null === $value || [] === $value) { return null; @@ -48,7 +48,7 @@ public function transform($value) /** * {@inheritdoc} */ - public function reverseTransform($value) + public function reverseTransform($value): mixed { if (null === $value || [] === $value) { return null; diff --git a/src/Form/EventListener/EasyAdminAutocompleteSubscriber.php b/src/Form/EventListener/EasyAdminAutocompleteSubscriber.php index adb6416411..8c3a7152ee 100644 --- a/src/Form/EventListener/EasyAdminAutocompleteSubscriber.php +++ b/src/Form/EventListener/EasyAdminAutocompleteSubscriber.php @@ -15,7 +15,7 @@ class EasyAdminAutocompleteSubscriber implements EventSubscriberInterface /** * {@inheritdoc} */ - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [ FormEvents::PRE_SET_DATA => 'preSetData', diff --git a/src/Form/EventListener/EasyAdminTabSubscriber.php b/src/Form/EventListener/EasyAdminTabSubscriber.php index e9eda5acbc..d405d81efd 100644 --- a/src/Form/EventListener/EasyAdminTabSubscriber.php +++ b/src/Form/EventListener/EasyAdminTabSubscriber.php @@ -16,7 +16,7 @@ class EasyAdminTabSubscriber implements EventSubscriberInterface /** * {@inheritdoc} */ - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [ FormEvents::POST_SUBMIT => ['handleViolations', -1], diff --git a/src/Form/Extension/EasyAdminExtension.php b/src/Form/Extension/EasyAdminExtension.php index 685d36dd2e..76de542083 100644 --- a/src/Form/Extension/EasyAdminExtension.php +++ b/src/Form/Extension/EasyAdminExtension.php @@ -26,7 +26,7 @@ public function __construct(RequestStack $requestStack = null) /** * {@inheritdoc} */ - public function finishView(FormView $view, FormInterface $form, array $options) + public function finishView(FormView $view, FormInterface $form, array $options): void { $request = null; if (null !== $this->requestStack) { @@ -74,7 +74,7 @@ public static function getExtendedTypes(): iterable /** * This legacy method can be removed when the minimum supported version is Symfony 4.2. */ - public function getExtendedType() + public function getExtendedType(): string { return FormType::class; } diff --git a/src/Form/Filter/Guesser/DoctrineOrmFilterTypeGuesser.php b/src/Form/Filter/Guesser/DoctrineOrmFilterTypeGuesser.php index 104a76b87e..768eb01863 100644 --- a/src/Form/Filter/Guesser/DoctrineOrmFilterTypeGuesser.php +++ b/src/Form/Filter/Guesser/DoctrineOrmFilterTypeGuesser.php @@ -2,7 +2,6 @@ namespace EasyCorp\Bundle\EasyAdminBundle\Form\Filter\Guesser; -use Doctrine\DBAL\Types\Type; use Doctrine\ORM\Mapping\ClassMetadataInfo; use EasyCorp\Bundle\EasyAdminBundle\Form\Filter\Type\ArrayFilterType; use EasyCorp\Bundle\EasyAdminBundle\Form\Filter\Type\BooleanFilterType; @@ -32,7 +31,7 @@ class DoctrineOrmFilterTypeGuesser extends DoctrineOrmTypeGuesser /** * {@inheritdoc} */ - public function guessType($class, $property) + public function guessType($class, $property): ?TypeGuess { if (!$doctrineEntityMetadata = $this->getMetadata($class)) { return null; diff --git a/src/Form/Guesser/MissingDoctrineOrmTypeGuesser.php b/src/Form/Guesser/MissingDoctrineOrmTypeGuesser.php index a5dbdd3bc9..961b3b1410 100644 --- a/src/Form/Guesser/MissingDoctrineOrmTypeGuesser.php +++ b/src/Form/Guesser/MissingDoctrineOrmTypeGuesser.php @@ -19,7 +19,7 @@ class MissingDoctrineOrmTypeGuesser extends DoctrineOrmTypeGuesser /** * {@inheritdoc} */ - public function guessType($class, $property) + public function guessType($class, $property): ?TypeGuess { if (null !== $metadataAndName = $this->getMetadata($class)) { /** @var ClassMetadataInfo $metadata */ diff --git a/src/Form/Type/ComparisonType.php b/src/Form/Type/ComparisonType.php index dc3bd6a481..5b7e6b335a 100644 --- a/src/Form/Type/ComparisonType.php +++ b/src/Form/Type/ComparisonType.php @@ -27,7 +27,7 @@ class ComparisonType extends AbstractType /** * {@inheritdoc} */ - public function configureOptions(OptionsResolver $resolver) + public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'label' => false, @@ -93,7 +93,7 @@ public function configureOptions(OptionsResolver $resolver) /** * {@inheritdoc} */ - public function getParent() + public function getParent(): ?string { return ChoiceType::class; } diff --git a/src/Form/Type/EasyAdminAutocompleteType.php b/src/Form/Type/EasyAdminAutocompleteType.php index 8bb1857818..ff6e2326c7 100644 --- a/src/Form/Type/EasyAdminAutocompleteType.php +++ b/src/Form/Type/EasyAdminAutocompleteType.php @@ -28,7 +28,7 @@ public function __construct(ConfigManager $configManager) /** * {@inheritdoc} */ - public function buildForm(FormBuilderInterface $builder, array $options) + public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->addEventSubscriber(new EasyAdminAutocompleteSubscriber()) @@ -38,7 +38,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * {@inheritdoc} */ - public function buildView(FormView $view, FormInterface $form, array $options) + public function buildView(FormView $view, FormInterface $form, array $options): void { if (null === $config = $this->configManager->getEntityConfigByClass($options['class'])) { throw new \InvalidArgumentException(sprintf('The configuration of the "%s" entity is not available (this entity is used as the target of the "%s" autocomplete field).', $options['class'], $form->getName())); @@ -50,7 +50,7 @@ public function buildView(FormView $view, FormInterface $form, array $options) /** * {@inheritdoc} */ - public function finishView(FormView $view, FormInterface $form, array $options) + public function finishView(FormView $view, FormInterface $form, array $options): void { // Add a custom block prefix to inner field to ease theming: array_splice($view['autocomplete']->vars['block_prefixes'], -1, 0, 'easyadmin_autocomplete_inner'); @@ -59,7 +59,7 @@ public function finishView(FormView $view, FormInterface $form, array $options) /** * {@inheritdoc} */ - public function configureOptions(OptionsResolver $resolver) + public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'multiple' => false, @@ -73,7 +73,7 @@ public function configureOptions(OptionsResolver $resolver) /** * {@inheritdoc} */ - public function getBlockPrefix() + public function getBlockPrefix(): string { return 'easyadmin_autocomplete'; } @@ -81,7 +81,7 @@ public function getBlockPrefix() /** * {@inheritdoc} */ - public function mapDataToForms($data, $forms) + public function mapDataToForms($data, $forms): void { $form = current(iterator_to_array($forms)); $form->setData($data); @@ -90,7 +90,7 @@ public function mapDataToForms($data, $forms) /** * {@inheritdoc} */ - public function mapFormsToData($forms, &$data) + public function mapFormsToData($forms, &$data): void { $form = current(iterator_to_array($forms)); $data = $form->getData(); diff --git a/src/Form/Type/EasyAdminDividerType.php b/src/Form/Type/EasyAdminDividerType.php index 3154bb0d15..c896911b4d 100644 --- a/src/Form/Type/EasyAdminDividerType.php +++ b/src/Form/Type/EasyAdminDividerType.php @@ -14,7 +14,7 @@ class EasyAdminDividerType extends AbstractType /** * {@inheritdoc} */ - public function getBlockPrefix() + public function getBlockPrefix(): string { return 'easyadmin_divider'; } diff --git a/src/Form/Type/EasyAdminFiltersFormType.php b/src/Form/Type/EasyAdminFiltersFormType.php index 00540694c4..371034b627 100644 --- a/src/Form/Type/EasyAdminFiltersFormType.php +++ b/src/Form/Type/EasyAdminFiltersFormType.php @@ -28,7 +28,7 @@ public function __construct(ConfigManager $configManager, array $configurators = /** * {@inheritdoc} */ - public function buildForm(FormBuilderInterface $builder, array $options) + public function buildForm(FormBuilderInterface $builder, array $options): void { $entityConfig = $this->configManager->getEntityConfig($options['entity']); @@ -49,7 +49,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * {@inheritdoc} */ - public function configureOptions(OptionsResolver $resolver) + public function configureOptions(OptionsResolver $resolver): void { $resolver->setRequired('entity'); $resolver->setDefaults([ diff --git a/src/Form/Type/EasyAdminFormType.php b/src/Form/Type/EasyAdminFormType.php index e9ba5e5dca..354a2e835e 100644 --- a/src/Form/Type/EasyAdminFormType.php +++ b/src/Form/Type/EasyAdminFormType.php @@ -44,7 +44,7 @@ public function __construct(ConfigManager $configManager, array $configurators = /** * {@inheritdoc} */ - public function buildForm(FormBuilderInterface $builder, array $options) + public function buildForm(FormBuilderInterface $builder, array $options): void { $entity = $options['entity']; $view = $options['view']; @@ -131,7 +131,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) /** * {@inheritdoc} */ - public function finishView(FormView $view, FormInterface $form, array $options) + public function finishView(FormView $view, FormInterface $form, array $options): void { $view->vars['easyadmin_form_tabs'] = $form->getConfig()->getAttribute('easyadmin_form_tabs'); $view->vars['easyadmin_form_groups'] = $form->getConfig()->getAttribute('easyadmin_form_groups'); @@ -140,7 +140,7 @@ public function finishView(FormView $view, FormInterface $form, array $options) /** * {@inheritdoc} */ - public function configureOptions(OptionsResolver $resolver) + public function configureOptions(OptionsResolver $resolver): void { $resolver ->setDefaults([ @@ -162,7 +162,7 @@ public function configureOptions(OptionsResolver $resolver) /** * {@inheritdoc} */ - public function getBlockPrefix() + public function getBlockPrefix(): string { return 'easyadmin'; } diff --git a/src/Form/Type/EasyAdminGroupType.php b/src/Form/Type/EasyAdminGroupType.php index 278a4d3553..34a0e40bbe 100644 --- a/src/Form/Type/EasyAdminGroupType.php +++ b/src/Form/Type/EasyAdminGroupType.php @@ -14,7 +14,7 @@ class EasyAdminGroupType extends AbstractType /** * {@inheritdoc} */ - public function getBlockPrefix() + public function getBlockPrefix(): string { return 'easyadmin_group'; } diff --git a/src/Form/Type/EasyAdminSectionType.php b/src/Form/Type/EasyAdminSectionType.php index 2d89b43372..38b2cdff6c 100644 --- a/src/Form/Type/EasyAdminSectionType.php +++ b/src/Form/Type/EasyAdminSectionType.php @@ -14,7 +14,7 @@ class EasyAdminSectionType extends AbstractType /** * {@inheritdoc} */ - public function getBlockPrefix() + public function getBlockPrefix(): string { return 'easyadmin_section'; } diff --git a/src/Form/Type/EasyAdminTabType.php b/src/Form/Type/EasyAdminTabType.php index fea32142be..48b2502d90 100644 --- a/src/Form/Type/EasyAdminTabType.php +++ b/src/Form/Type/EasyAdminTabType.php @@ -14,7 +14,7 @@ class EasyAdminTabType extends AbstractType /** * {@inheritdoc} */ - public function getBlockPrefix() + public function getBlockPrefix(): string { return 'easyadmin_tab'; } diff --git a/src/Twig/EasyAdminTwigExtension.php b/src/Twig/EasyAdminTwigExtension.php index 05e4d7cc08..1cceaa57bc 100644 --- a/src/Twig/EasyAdminTwigExtension.php +++ b/src/Twig/EasyAdminTwigExtension.php @@ -48,7 +48,7 @@ public function __construct(ConfigManager $configManager, PropertyAccessorInterf /** * {@inheritdoc} */ - public function getFunctions() + public function getFunctions(): array { return [ new TwigFunction('easyadmin_render_field_for_*_view', [$this, 'renderEntityField'], ['is_safe' => ['html'], 'needs_environment' => true]), @@ -69,7 +69,7 @@ public function getFunctions() /** * {@inheritdoc} */ - public function getFilters() + public function getFilters(): array { $filters = [ new TwigFilter('easyadmin_truncate', [$this, 'truncateText'], ['needs_environment' => true]), From 38d6ff29156189491bbaa2d0474ef1ed3495321a Mon Sep 17 00:00:00 2001 From: Ludek Benedik Date: Wed, 25 Jan 2023 10:43:07 +0100 Subject: [PATCH 02/10] Update Composer dependencies --- composer.json | 66 +++++++++++++++++++++++++-------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/composer.json b/composer.json index 0b4b870843..8afe582a03 100644 --- a/composer.json +++ b/composer.json @@ -13,45 +13,45 @@ ], "minimum-stability": "dev", "require": { - "php": ">=7.1.3", - "doctrine/common": "^2.8 || ^3.0", - "doctrine/doctrine-bundle": "^1.8|^2.0", - "doctrine/orm": "^2.6.3", - "doctrine/persistence": "^1.3.4 || ^2.0", + "php": ">=8.0", + "doctrine/common": "^3.0.3", + "doctrine/doctrine-bundle": "^2.5", + "doctrine/orm": "^2.11", + "doctrine/persistence": "^2.4 || ^3", "pagerfanta/pagerfanta": "^1.0.1|^2.0", - "symfony/asset": "^4.2|^5.0", - "symfony/cache": "^4.2|^5.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^4.2|^5.0", - "symfony/doctrine-bridge": "^4.2|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.2|^5.0", - "symfony/expression-language": "^4.2|^5.0", - "symfony/finder": "^4.2|^5.0", - "symfony/form": "^4.2|^5.0", - "symfony/framework-bundle": "^4.2|^5.0", - "symfony/http-foundation": "^4.2|^5.0", - "symfony/http-kernel": "^4.3.7|^5.0", + "symfony/asset": "^5.4|^6.0", + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/doctrine-bridge": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/form": "^5.4|^6.0", + "symfony/framework-bundle": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", "symfony/polyfill-mbstring": "^1.7", - "symfony/property-access": "^4.2|^5.0", - "symfony/security-bundle": "^4.2|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/twig-bridge": "^4.2|^5.0", - "symfony/twig-bundle": "^4.2|^5.0", - "symfony/validator": "^4.2|^5.0", - "twig/twig": "^2.11.3|^3.0" + "symfony/property-access": "^5.4|^6.0", + "symfony/security-bundle": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/twig-bridge": "^5.4|^6.0", + "symfony/twig-bundle": "^5.4|^6.0", + "symfony/validator": "^5.4|^6.0", + "twig/twig": "^3.3" }, "require-dev": { "doctrine/data-fixtures": "^1.3", "doctrine/doctrine-fixtures-bundle": "^3.0", - "psr/log": "~1.0", - "symfony/browser-kit": "^4.2|^5.0", - "symfony/console": "^4.2|^5.0", - "symfony/css-selector": "^4.2|^5.0", - "symfony/dom-crawler": "^4.2|^5.0", - "symfony/phpunit-bridge": "^4.3.5|^5.0", - "symfony/var-dumper": "^4.2|^5.0", - "symfony/yaml": "^4.2|^5.0" + "psr/log": "^1|^2|^3", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dom-crawler": "^5.4|^6.0", + "symfony/phpunit-bridge": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" }, "config": { "sort-packages": true, From d3add18c5bf1378fbe45a63584a50f4a9b42d5b1 Mon Sep 17 00:00:00 2001 From: Ludek Benedik Date: Wed, 25 Jan 2023 10:43:37 +0100 Subject: [PATCH 03/10] Replace Route annotation by Route attribute --- src/Controller/AdminControllerTrait.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Controller/AdminControllerTrait.php b/src/Controller/AdminControllerTrait.php index 1600122624..0acc83e9b6 100644 --- a/src/Controller/AdminControllerTrait.php +++ b/src/Controller/AdminControllerTrait.php @@ -53,14 +53,13 @@ trait AdminControllerTrait protected $em; /** - * @Route("/", name="easyadmin") - * * @param Request $request * * @return RedirectResponse|Response * * @throws ForbiddenActionException */ + #[Route('/', name: 'easyadmin')] public function indexAction(Request $request) { $this->initialize($request); From e01d7f23f22c7911e5afe6a346c265d50953119c Mon Sep 17 00:00:00 2001 From: Ludek Benedik Date: Thu, 2 Feb 2023 14:42:38 +0100 Subject: [PATCH 04/10] Update Pagerfanta --- composer.json | 5 +++-- src/Search/Paginator.php | 10 +--------- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/composer.json b/composer.json index 8afe582a03..6e9456f4b9 100644 --- a/composer.json +++ b/composer.json @@ -11,14 +11,15 @@ "homepage": "https://github.com/EasyCorp/EasyAdminBundle/blob/master/CONTRIBUTORS.md" } ], - "minimum-stability": "dev", + "minimum-stability": "stable", "require": { "php": ">=8.0", "doctrine/common": "^3.0.3", "doctrine/doctrine-bundle": "^2.5", "doctrine/orm": "^2.11", "doctrine/persistence": "^2.4 || ^3", - "pagerfanta/pagerfanta": "^1.0.1|^2.0", + "pagerfanta/core": "^3.7", + "pagerfanta/doctrine-orm-adapter": "^3.7", "symfony/asset": "^5.4|^6.0", "symfony/cache": "^5.4|^6.0", "symfony/config": "^5.4|^6.0", diff --git a/src/Search/Paginator.php b/src/Search/Paginator.php index 35f34ea1d0..837dd7db64 100644 --- a/src/Search/Paginator.php +++ b/src/Search/Paginator.php @@ -5,7 +5,6 @@ use Doctrine\ORM\Query as DoctrineQuery; use Doctrine\ORM\QueryBuilder as DoctrineQueryBuilder; use Doctrine\ORM\Tools\Pagination\CountWalker; -use Pagerfanta\Adapter\DoctrineORMAdapter; use Pagerfanta\Doctrine\ORM\QueryAdapter; use Pagerfanta\Pagerfanta; @@ -29,14 +28,7 @@ public function createOrmPaginator($queryOrQueryBuilder, $page = 1, $maxPerPage { $query = $this->getQuery($queryOrQueryBuilder); - if (class_exists(QueryAdapter::class)) { - // don't change the following line (you did that twice in the past and broke everything) - $paginator = new Pagerfanta(new QueryAdapter($query, true, false)); - } else { - // don't change the following line (you did that twice in the past and broke everything) - $paginator = new Pagerfanta(new DoctrineORMAdapter($query, true, false)); - } - + $paginator = new Pagerfanta(new QueryAdapter($query, true, false)); $paginator->setMaxPerPage($maxPerPage); $paginator->setCurrentPage($page); From 5d6fe2bf5d35a0c6ef7d0a7793996c02e29694da Mon Sep 17 00:00:00 2001 From: Julien Pessey Date: Wed, 31 May 2023 15:28:45 +0200 Subject: [PATCH 05/10] Update composer.json for SF6 --- composer.json | 52 +++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/composer.json b/composer.json index 0b4b870843..50e4bb8232 100644 --- a/composer.json +++ b/composer.json @@ -19,39 +19,39 @@ "doctrine/orm": "^2.6.3", "doctrine/persistence": "^1.3.4 || ^2.0", "pagerfanta/pagerfanta": "^1.0.1|^2.0", - "symfony/asset": "^4.2|^5.0", - "symfony/cache": "^4.2|^5.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^4.2|^5.0", - "symfony/doctrine-bridge": "^4.2|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.2|^5.0", - "symfony/expression-language": "^4.2|^5.0", - "symfony/finder": "^4.2|^5.0", - "symfony/form": "^4.2|^5.0", - "symfony/framework-bundle": "^4.2|^5.0", - "symfony/http-foundation": "^4.2|^5.0", - "symfony/http-kernel": "^4.3.7|^5.0", + "symfony/asset": "^4.2|^5.0|^6.0", + "symfony/cache": "^4.2|^5.0|^6.0", + "symfony/config": "^4.2|^5.0|^6.0", + "symfony/dependency-injection": "^4.2|^5.0|^6.0", + "symfony/doctrine-bridge": "^4.2|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.2|^5.0|^6.0", + "symfony/expression-language": "^4.2|^5.0|^6.0", + "symfony/finder": "^4.2|^5.0|^6.0", + "symfony/form": "^4.2|^5.0|^6.0", + "symfony/framework-bundle": "^4.2|^5.0|^6.0", + "symfony/http-foundation": "^4.2|^5.0|^6.0", + "symfony/http-kernel": "^4.3.7|^5.0|^6.0", "symfony/polyfill-mbstring": "^1.7", - "symfony/property-access": "^4.2|^5.0", - "symfony/security-bundle": "^4.2|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/twig-bridge": "^4.2|^5.0", - "symfony/twig-bundle": "^4.2|^5.0", - "symfony/validator": "^4.2|^5.0", + "symfony/property-access": "^4.2|^5.0|^6.0", + "symfony/security-bundle": "^4.2|^5.0|^6.0", + "symfony/translation": "^4.2|^5.0|^6.0", + "symfony/twig-bridge": "^4.2|^5.0|^6.0", + "symfony/twig-bundle": "^4.2|^5.0|^6.0", + "symfony/validator": "^4.2|^5.0|^6.0", "twig/twig": "^2.11.3|^3.0" }, "require-dev": { "doctrine/data-fixtures": "^1.3", "doctrine/doctrine-fixtures-bundle": "^3.0", "psr/log": "~1.0", - "symfony/browser-kit": "^4.2|^5.0", - "symfony/console": "^4.2|^5.0", - "symfony/css-selector": "^4.2|^5.0", - "symfony/dom-crawler": "^4.2|^5.0", - "symfony/phpunit-bridge": "^4.3.5|^5.0", - "symfony/var-dumper": "^4.2|^5.0", - "symfony/yaml": "^4.2|^5.0" + "symfony/browser-kit": "^4.2|^5.0|^6.0", + "symfony/console": "^4.2|^5.0|^6.0", + "symfony/css-selector": "^4.2|^5.0|^6.0", + "symfony/dom-crawler": "^4.2|^5.0|^6.0", + "symfony/phpunit-bridge": "^4.3.5|^5.0|^6.0", + "symfony/var-dumper": "^4.2|^5.0|^6.0", + "symfony/yaml": "^4.2|^5.0|^6.0" }, "config": { "sort-packages": true, From 28b3a79ce02fb9270bd4a9fc813dab5350171fdf Mon Sep 17 00:00:00 2001 From: Julien Pessey Date: Wed, 31 May 2023 15:32:19 +0200 Subject: [PATCH 06/10] Update composer.json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 50e4bb8232..25d50b8c97 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,7 @@ ], "minimum-stability": "dev", "require": { - "php": ">=7.1.3", + "php": ">=8.0.2", "doctrine/common": "^2.8 || ^3.0", "doctrine/doctrine-bundle": "^1.8|^2.0", "doctrine/orm": "^2.6.3", From 807d2d24a9bcb9707f8030eeb45650c7e467915a Mon Sep 17 00:00:00 2001 From: Julien Pessey Date: Wed, 31 May 2023 15:44:54 +0200 Subject: [PATCH 07/10] Update composer.json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 25d50b8c97..d446d7afc8 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "easycorp/easyadmin-bundle", + "name": "pesseyjulien/easyadmin-bundle", "type": "symfony-bundle", "description": "Admin generator for Symfony applications", "keywords": ["backend", "admin", "generator"], From 27f1ccc572795e66901719b1908efa29ccfb5028 Mon Sep 17 00:00:00 2001 From: Julien Pessey Date: Wed, 31 May 2023 15:48:29 +0200 Subject: [PATCH 08/10] Update composer.json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index d446d7afc8..25d50b8c97 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "pesseyjulien/easyadmin-bundle", + "name": "easycorp/easyadmin-bundle", "type": "symfony-bundle", "description": "Admin generator for Symfony applications", "keywords": ["backend", "admin", "generator"], From 3fb8855fa52add5ccbed41379b8a261ca98edc72 Mon Sep 17 00:00:00 2001 From: Ludek Benedik Date: Mon, 5 Feb 2024 11:46:51 +0100 Subject: [PATCH 09/10] Replace the MakeAdminMigrationCommand::$defaultName static property by the AsCommand attribute --- src/Command/MakeAdminMigrationCommand.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Command/MakeAdminMigrationCommand.php b/src/Command/MakeAdminMigrationCommand.php index 47871902a5..c0da36facf 100644 --- a/src/Command/MakeAdminMigrationCommand.php +++ b/src/Command/MakeAdminMigrationCommand.php @@ -3,6 +3,7 @@ namespace EasyCorp\Bundle\EasyAdminBundle\Command; use EasyCorp\Bundle\EasyAdminBundle\Configuration\ConfigManager; +use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -15,9 +16,9 @@ * * @author Javier Eguiluz */ +#[AsCommand('make:admin:migration')] class MakeAdminMigrationCommand extends Command { - protected static $defaultName = 'make:admin:migration'; private $configManager; private $projectDir; From 1394b897c5f9e4b8f66c0dc442c648ac5baa5d33 Mon Sep 17 00:00:00 2001 From: Ludek Benedik Date: Tue, 6 Feb 2024 11:06:15 +0100 Subject: [PATCH 10/10] Fix rendering the entity if an association is null --- src/Twig/EasyAdminTwigExtension.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Twig/EasyAdminTwigExtension.php b/src/Twig/EasyAdminTwigExtension.php index 1cceaa57bc..69529c023a 100644 --- a/src/Twig/EasyAdminTwigExtension.php +++ b/src/Twig/EasyAdminTwigExtension.php @@ -280,7 +280,7 @@ private function addAssociationFieldParameters(array $templateParameters) $isShowActionAllowed = !\in_array('show', $targetEntityConfig['disabled_actions']); if ($templateParameters['field_options']['associationType'] & ClassMetadata::TO_ONE) { - if ($this->propertyAccessor->isReadable($templateParameters['value'], $targetEntityConfig['primary_key_field_name'])) { + if (null !== $templateParameters['value'] && $this->propertyAccessor->isReadable($templateParameters['value'], $targetEntityConfig['primary_key_field_name'])) { $primaryKeyValue = $this->propertyAccessor->getValue($templateParameters['value'], $targetEntityConfig['primary_key_field_name']); } else { $primaryKeyValue = null;