【问题标题】:Zend Form Validator foreachZend 表单验证器 foreach
【发布时间】:2012-04-16 17:00:54
【问题描述】:

早上,

我对 Zend 表单验证器有一个奇怪的问题。当我想输出错误消息时,我看到: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);没有解决我的问题。

有谁知道我做错了什么?

提前致谢!

【问题讨论】:

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


    【解决方案1】:

    这里你误会了,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 = $element-&gt;getMessages(); 获取元素消息。为单个元素返回的错误消息是错误代码/错误消息对的关联数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多