我一直在使用 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
查找正在搜索 notEmpty
和 email
。
您在 $errors
中实际拥有的是:
Array
(
[0] =>
[1] => email must be a valid email
)
$errors[0]
是您对未找到的 notEmpty
的查找。$errors[1]
是您对找到的 email
的查找。如果您更改它以查找有问题的字段
name
、 email
和 message
: $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/