1

À l'heure actuelle, j'ai des éléments de formulaire Zend enveloppés dans des éléments de liste. Le formulaire valide ou crache des erreurs comme il se doit. Mais je voudrais appliquer une classe aux éléments de la liste des éléments incriminés (mais seulement aux éléments de la liste des éléments offensants) sur l'échec de la validation. Exemple:Comment appliquer une classe à un décorateur Zend Framework en cas d'erreur?

Ce champ est entrée valide

<li> 
    <input type="text" name="address2" id="address2" value="" size="25"> 
</li> 

mais celui-ci ne pas

<li class="error"> 
    <input type="text" name="address2" id="address2" value="" size="25"> 
</li> 

La seule façon que je peux voir pour ce faire est d'étendre Zend_Form_Element, et passer outre isValid() et puis étend toutes les classes dérivées de Zend_Form_Element dont j'ai besoin pour mes formes.

Il doit y avoir un meilleur moyen.

À droite?

Qu'est-ce qui me manque?

MERCI

Répondre

1

Je pense que vous êtes mieux modifier le décorateur HtmlTag fonction de l'état de l'élément de forme.

$tag = $element->getDecorator('HtmlTag'); 
$tag->setOption('class', 'error'); 

Il existe probablement un certain nombre d'endroits différents que vous pouvez invoquer lors de la validation. Vous pouvez le faire à votre vue ou détecter la présence d'erreurs sur chaque champ lorsque vous construisez le formulaire.

Vous pourriez également vouloir créer vos propres décorateurs.

Ces articles here et here couvrent parfaitement le monde complexe des décorateurs Zend_Form.

+0

Merci. Enlevez-le comme vous l'avez suggéré: dans le formulaire, en cochant '$ this-> form-> getElement ('foobar') -> getErrors()'. – PartialOrder