У меня есть класс пользовательской формы, в котором есть элементы, и я пытаюсь добавить валидатор Regex.
Вот что я пробовал
$inputFilter->add([
"name" => "password",
"required" => true,
"filters" => [
],
"validators" => [
[
"name" => new Regex(["pattern" => "/^[a-zA-Z0-9_]+$/"]),
],
[
"name" => "NotEmpty",
],
[
"name" => "StringLength",
"options" => [
"min" => 6,
"max" => 64
],
],
],
]);
Но это бросает
Object of class Zend\Validator\Regex could not be converted to string
Может кто-нибудь мне помочь?





Вы можете добавить спецификации входного фильтра для валидатора, должно работать следующее
$inputFilter->add([
"name" => "password",
"required" => true,
"filters" => [
],
"validators" => [
// add validator(s) using input filter specs
[
"name" => "Regex",
"options" => [
"pattern" => "/^[a-zA-Z0-9_]+$/"
],
],
[
"name" => "NotEmpty",
],
[
"name" => "StringLength",
"options" => [
"min" => 6,
"max" => 64
],
],
],
]);
Если вы действительно хотите создать экземпляр объекта (используя new Regex(...), как в исходном коде), вы можете сделать это таким образом.
$inputFilter->add([
"name" => "password",
"required" => true,
"filters" => [
],
"validators" => [
// add a regex validator instance
new Regex(["pattern" => "/^[a-zA-Z0-9_]+$/"]),
// add using input filter specs ...
[
"name" => "NotEmpty",
],
[
"name" => "StringLength",
"options" => [
"min" => 6,
"max" => 64
],
],
],
]);
Вы также можете найти этот пост в блоге zf полезным Проверка данных с помощью zend-inputfilter, а также официальный документы zend-input-filter
Очень хорошо, спасибо.
+1 хорошо объяснено и документы. Тем не менее, возможно, стоит переключиться на использование FQCN, например. «StringLength::class» вместо «StringLength» — в случае обновлений ZF это легче рефакторить.