diff --git a/CHANGELOG.md b/CHANGELOG.md index 575d4b987..07ec79211 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ 1. [](#improved) * Added alias `selfupdate` to the `self-upgrade` `bin/gpm` CLI command + * Add `ignore_empty` property to be used on array fields, if positive only save options with a value # v1.1.9-rc.2 ## 11/26/2016 diff --git a/system/src/Grav/Common/Data/Validation.php b/system/src/Grav/Common/Data/Validation.php index 22f6d8454..7dbf34838 100644 --- a/system/src/Grav/Common/Data/Validation.php +++ b/system/src/Grav/Common/Data/Validation.php @@ -9,6 +9,7 @@ namespace Grav\Common\Data; use Grav\Common\Grav; +use Grav\Common\Utils; use Symfony\Component\Yaml\Exception\ParseException; use Symfony\Component\Yaml\Parser; use Symfony\Component\Yaml\Yaml; @@ -569,6 +570,7 @@ class Validation return null; } + if ($options) { $useKey = isset($field['use']) && $field['use'] == 'keys'; foreach ($values as $key => $value) { @@ -586,6 +588,18 @@ class Validation } } + if (isset($field['ignore_empty']) && Utils::isPositive($field['ignore_empty'])) { + foreach ($values as $key => $value) { + foreach ($value as $inner_key => $inner_value) { + if ($inner_value == '') { + unset($value[$inner_key]); + } + } + + $values[$key] = $value; + } + } + return $values; }