Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Display Zend_Form form errors in ViewScript

I'm trying to display all form errors before the form using a ViewScript. Here is the code that I'm currently trying to use within my ViewScript:

<div class="errors">
<?php echo $this->formErrors($this->element->getMessages()); ?>
</div>

This call gives me an error message:

Warning: htmlspecialchars() expects parameter 1 to be string, array given

I've seen this same code suggested other places but its not working for me. If I print out $this->element->getMessages() I do see the error messages as the following:

Array ( [myField] => Array ( [isEmpty] => Value is required and can't be empty ) )

Any ideas?

like image 487
Jeremy Hicks Avatar asked Aug 11 '10 00:08

Jeremy Hicks


1 Answers

The getMessages() returns an array of form element names as keys which each contain an array of errors for that element. So basically instead of handing the formErrors view helper:

Array ( [isEmpty] => Value is required and can't be empty )

You are handing it:

Array ( [myField] => Array ( [isEmpty] => Value is required and can't be empty ) )

You would want to do something like this instead:

$arrMessages = $this->myForm->getMessages();
foreach($arrMessages as $field => $arrErrors) {
    echo sprintf(
        '<ul><li>%s</li>%s</ul>',
        $this->myForm->getElement($field)->getLabel(),
        $this->formErrors($arrErrors)

    );
}
like image 67
Mark Avatar answered Nov 15 '22 08:11

Mark