2012-04-16 3 views
0

Утро,Zend Form Validator foreach

У меня есть странная проблема с 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 { 

} 

Я читать документы и узнал, что эхо $ сообщения; должен выводить ошибку в текстовом виде.

Выполнение 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();. Сообщения об ошибках, возвращаемые для одного элемента, представляют собой ассоциативный массив пар сообщений ошибок/ошибок.