From e2c9ecb9419221c88ff46d35e0c48e40b4e39b35 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Wed, 19 Jul 2023 19:36:32 +0200 Subject: [PATCH] add option to remove itetables values and/or specifics keys in the twig toArray function --- src/core/Resources/views/admin/crud/_show.html.twig | 2 +- src/core/Twig/Extension/EntityExtension.php | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/core/Resources/views/admin/crud/_show.html.twig b/src/core/Resources/views/admin/crud/_show.html.twig index 1c73877..e2a63ce 100644 --- a/src/core/Resources/views/admin/crud/_show.html.twig +++ b/src/core/Resources/views/admin/crud/_show.html.twig @@ -1,6 +1,6 @@
- {% for item in entity_to_array(entity) %} + {% for item in entity_to_array(entity, false, ['id']) %}
{{ item.name|trans }}
{{ item.value }}
{% endfor %} diff --git a/src/core/Twig/Extension/EntityExtension.php b/src/core/Twig/Extension/EntityExtension.php index 466cf79..92152f7 100644 --- a/src/core/Twig/Extension/EntityExtension.php +++ b/src/core/Twig/Extension/EntityExtension.php @@ -33,7 +33,7 @@ class EntityExtension extends AbstractExtension ]; } - public function toArray(EntityInterface $entity): array + public function toArray(EntityInterface $entity, bool $keepIterable = true, array $except = []): array { $metaData = $this->entityManager->getClassMetadata(get_class($entity)); $array = []; @@ -42,6 +42,14 @@ class EntityExtension extends AbstractExtension try { $value = $this->propertyAccessor->getValue($entity, $field); + if (in_array($field, $except)) { + continue; + } + + if (is_iterable($value) && !$keepIterable) { + continue; + } + if (is_object($value)) { $value = (string) $value; }