2012-04-16 68 views
0

早上,Zend表格验证器foreach

我有一个Zend Form验证器的奇怪问题。当我想输出我看到的错误消息: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 { 

} 

我已经阅读文档,得知回声$消息;应以纯文本形式输出错误消息。

做foreach($ smsRequestForm-> getMessages()为$ key => $ message);并没有解决我的问题。

有谁知道我在做什么错?

在此先感谢!

回答

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