From 586e7c81977547c71add2e8abed5444d12354107 Mon Sep 17 00:00:00 2001 From: Visman Date: Tue, 29 Sep 2020 18:08:52 +0700 Subject: [PATCH] Update Validator.php Add the ability to escape the delimiter in the rule --- app/Core/Validator.php | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/app/Core/Validator.php b/app/Core/Validator.php index 582332aa..81534089 100644 --- a/app/Core/Validator.php +++ b/app/Core/Validator.php @@ -155,22 +155,24 @@ class Validator list($field, $suffix) = \explode('.', $field, 2); } $rules = []; + $raw = \str_replace('\|', "\0", $raw); // перебор правил для текущего поля - foreach (\explode('|', $raw) as $rule) { //???? нужно экранирование для разделителей - $vs = \explode(':', $rule, 2); - if (empty($this->validators[$vs[0]])) { - try { + foreach (\explode('|', $raw) as $rule) { + $rule = \str_replace("\0", '|', $rule); + $vs = \explode(':', $rule, 2); + if (empty($this->validators[$vs[0]])) { + try { $validator = $this->c->{'VL' . $vs[0]}; - } catch (Exception $e) { + } catch (Exception $e) { $validator = null; - } - if ($validator instanceof Validators) { + } + if ($validator instanceof Validators) { $this->validators[$vs[0]] = [$validator, $vs[0]]; - } else { + } else { throw new RuntimeException($vs[0] . ' validator not found'); - } - } - $rules[$vs[0]] = $vs[1] ?? ''; + } + } + $rules[$vs[0]] = $vs[1] ?? ''; } if (isset($suffix)) { if (