$app->post('/', function () use ($app) {
$email = new Input('email');
$email->getValidatorChain()
->addValidator(new Validator\EmailAddress());
$password = new Input('name');
$password->getValidatorChain()
->addValidator(new Validator\StringLength(1));
$inputFilter = new InputFilter();
$inputFilter->add($email)
->add($password)
->setData($_POST);
if ($inputFilter->isValid()) {
// do stuff
$app->redirect('/');
} else {
$field_errors = array();
foreach ($inputFilter->getInvalidInput() as $field => $error) {
foreach ($error->getMessages() as $message) {
$field_errors[] = str_replace('Value', ucfirst($field), $message);
}
}
$app->render('index.php', array('field_errors' => $field_errors));
}
});
我目前有使用 Slim Framework 和 Zend InputFilter 的上述代码。但是,我想检索错误消息。我不断收到“Value ....”,因此我对它们执行了 str_replace
以获得 Email is not a valid email
如下所示:
$field_errors = array();
foreach ($inputFilter->getInvalidInput() as $field => $error) {
foreach ($error->getMessages() as $message) {
$field_errors[] = str_replace('Value', ucfirst($field), $message);
}
}
这是从 Zend InputFilter 获取错误消息的正确方法还是还有其他方法?
最佳答案
您只需调用 $inputFilter->getMessages() 即可获取键控数组:
array(
'input' -> 'message',
'inputtwo' => 'anothermessage',
);
这在内部为您使用 getInvalidInput(),因此不需要那些嵌套的 foreach 循环,对 getMessages() 的一次调用应该没问题。
关于php - 从 Zend InputFilter 检索错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13415866/