Zend Form Validator foreach

时间:2012-04-16 08:40:18

标签: zend-framework zend-form zend-validate

上午,

我对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);并没有解决我的问题。

有谁知道我做错了什么?

提前致谢!

1 个答案:

答案 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();获取元素消息。为单个元素返回的错误消息是错误代码/错误消息对的关联数组。