0

早晨,

我对 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->getMessages() as $key => $message); 不能解决我的问题。

有谁知道我做错了什么?

提前致谢!

4

1 回答 1

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;
    }
}

手册中的更多信息:

getMessages()返回元素名称/消息的关联数组(其中消息是错误代码/错误消息对的关联数组)。

我猜你在手册中读到的是如何使用$messages = $element->getMessages();. 为单个元素返回的错误消息是错误代码/错误消息对的关联数组。

于 2012-04-16T08:54:34.897 回答