Как добавить валидатор регулярных выражений в классе формы в Zend - PullRequest
0 голосов
/ 28 января 2019

У меня есть класс формы User, в котором есть элементы, и я пытаюсь добавить валидатор 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
                    ],
                ],
            ],
        ]);

Но он выдает

Объект класса Zend \ Validator \ Regex не может быть преобразован в строку

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 29 января 2019

Вы можете добавить спецификации входного фильтра для валидатора, должно работать следующее

$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

...