我一直在使用 Respect Validation 进行表单验证

$app->post('/', function () use ($app) {

    $validator  = v::key('name', v::string()->notEmpty())
                    ->key('email', v::email()->notEmpty())
                    ->key('message', v::string()->notEmpty());

    $errors = array();

    try{
        $validator->assert($_POST);
    } catch (\InvalidArgumentException $e) {
        $errors = $e->findMessages(array(
            'notEmpty'     => '{{name}} is required',
            'email'        => '{{name}} must be a valid email'
        ));
    }

    if ($validator->validate($_POST)) {
        // do stuff

        $app->redirect('/');

    } else {

        $app->render('index.php', array('field_errors' => array_values($errors)));

    }
});

循环 array_values($errors) 会给我:
"" is required
email must be a valid email

我需要类似的东西:
name is required
email must be a valid email
message is required

应该如何使用 Respect Validation 完成

最佳答案

消息在那里,但您的 findMessages 查找正在搜索 notEmptyemail

您在 $errors 中实际拥有的是:

Array
(
    [0] =>
    [1] => email must be a valid email
)
$errors[0] 是您对未找到的 notEmpty 的查找。$errors[1] 是您对找到的 email 的查找。

如果您更改它以查找有问题的字段 nameemailmessage :
    $errors = $e->findMessages(array(
        'name'         => '{{name}} is required',
        'email'        => '{{name}} must be a valid email',
        'message'      => '{{name}} is required'
    ));

然后你会得到想要的结果:
Array
(
    [0] => name is required
    [1] => email must be a valid email
    [2] => message is required
)

请原谅我纯粹是偶然发现的延迟响应,如果请求官方 Respect\Validation issue tracker 的支持,您会发现更快的结果。这也将是您提出任何改进建议的理想平台,以帮助避免您遇到的问题。您会发现 Respect 团队热心、友好且乐于助人。

快乐!

关于php - 如何从 Respect\Validation 获取验证错误消息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13417649/

10-11 09:07