From 9333fcc1d6f9f80b85eeacf4ab94ccda348361d0 Mon Sep 17 00:00:00 2001 From: Matias Griese Date: Mon, 9 Aug 2021 21:38:01 +0300 Subject: [PATCH] Generalize FolderStorage templating --- CHANGELOG.md | 1 + system/src/Grav/Common/Data/Validation.php | 25 ++++++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ca6d31ba..1f25ef3df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ * Fixed `Flex Object` missing key field value when using `FolderStorage` * Fixed broken Twig try tag when catch has not been defined or is empty * Fixed `FlexForm` serialization + * Fixed form validation for numeric values in PHP 8 # v1.7.18 ## 07/19/2021 diff --git a/system/src/Grav/Common/Data/Validation.php b/system/src/Grav/Common/Data/Validation.php index bb3fdd18c..f69c841fc 100644 --- a/system/src/Grav/Common/Data/Validation.php +++ b/system/src/Grav/Common/Data/Validation.php @@ -519,17 +519,30 @@ class Validation return false; } - if (isset($params['min']) && $value < $params['min']) { - return false; + $value = (float)$value; + + $min = 0; + if (isset($params['min'])) { + $min = (float)$params['min']; + if ($value < $min) { + return false; + } } - if (isset($params['max']) && $value > $params['max']) { - return false; + if (isset($params['max'])) { + $max = (float)$params['max']; + if ($value > $max) { + return false; + } } - $min = $params['min'] ?? 0; + if (isset($params['step'])) { + $step = (float)$params['step']; - return !(isset($params['step']) && fmod($value - $min, $params['step']) === 0); + return fmod($value - $min, $step) === 0.0; + } + + return true; } /**