上午,
我对Zend Form Validator有一个奇怪的问题。当我想输出错误消息时,我看到:ArrayArray。
我的代码:
<?php
// Load sms request form
$smsRequestForm = new Application_Form_Sms_Request();
// Form posted?
if ($this->getRequest()->getMethod() != 'POST') {
// Show the form
$this->view->showForm = true;
$this->view->smsRequestForm = $smsRequestForm;
} elseif (!$smsRequestForm->isValid($_POST)) {
// Show the form and output the validation errors
$this->view->showForm = true;
$this->view->smsRequestForm = $smsRequestForm;
// Loop through the error messages
foreach($smsRequestForm->getMessages() as $message)
{
echo $message;
}
} else {
}
我已阅读文档并了解到echo $ message;应该以纯文本格式输出错误消息。
做foreach($ smsRequestForm-&gt; getMessages()为$ key =&gt; $ message);并没有解决我的问题。
有谁知道我做错了什么?
提前致谢!
答案 0 :(得分:2)
你错了,getMessages()
返回一个这样的数组,例如:
array(2) {
["username"] => array(2) {
["stringLengthTooShort"] => string(33) "'' is less than 3 characters long"
["alphaStringEmpty"] => string(21) "'' is an empty string"
}
["password"] => array(1) {
[0] => string(7) "Message"
}
}
因此,您需要迭代它以获得每个字段错误,如下所示:
foreach($form->getMessages() as $fields)
{
foreach ($fields as $error) {
echo $error;
}
}
更多信息here in the manual:
getMessages()返回元素名称/消息的关联数组 (其中messages是错误代码/错误消息的关联数组 对)。
我猜你在手册中读过的内容是如何使用$messages = $element->getMessages();
获取元素消息。为单个元素返回的错误消息是错误代码/错误消息对的关联数组。