From a156247dc3c6f3f75a63236aa9fcdad0c3ffc6d9 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Fri, 22 May 2020 23:08:02 +0300 Subject: [PATCH] Fixed blueprint value filtering in lists [#2923] --- CHANGELOG.md | 1 + system/src/Grav/Common/Data/BlueprintSchema.php | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0ace4bb2..4f608c5d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ * Changed `Folder::hasChildren` to `Folder::countChildren` 1. [](#bugfix) * Fixed new `Flex Page` not having correct form fields for the page type + * Fixed blueprint value filtering in lists [#2923](https://github.com/getgrav/grav/issues/2923) # v1.7.0-rc.11 ## 05/14/2020 diff --git a/system/src/Grav/Common/Data/BlueprintSchema.php b/system/src/Grav/Common/Data/BlueprintSchema.php index de7fb8897..7cfb02804 100644 --- a/system/src/Grav/Common/Data/BlueprintSchema.php +++ b/system/src/Grav/Common/Data/BlueprintSchema.php @@ -202,11 +202,14 @@ class BlueprintSchema extends BlueprintSchemaBase implements ExportInterface continue; } - if ($rule && $rule['type'] !== '_parent') { + $isParent = isset($val['*']); + + if (!$isParent && $rule && $rule['type'] !== '_parent') { $field = Validation::filter($field, $rule); } elseif (\is_array($field) && \is_array($val)) { // Array has been defined in blueprints. - $field = $this->filterArray($field, $val, $parent . $key . '.', $missingValuesAsNull, $keepEmptyValues); + $k = $isParent ? '*' : $key; + $field = $this->filterArray($field, $val, $parent . $k . '.', $missingValuesAsNull, $keepEmptyValues); if (null === $field) { // Nested parent has no values.