2009-07-06 3 views
1

Zend ajoute automatiquement des balises autour des éléments de formulaire générés. Comment puis-je supprimer ces balises en tant que paramètres de la fonction addElement.Suppression de décorateurs dans les éléments de formulaire Zend par les paramètres

J'ai essayé de changer le drapeau disableLoadDefaultDecorators, mais l'élément ne le rend pas du tout. Par exemple: $ searchForm-> addElement ('text', 'searchText', array ('class' => 'onClickClear', 'disableLoadDefaultDecorators' => true));

+0

En désactivant les décorateurs par défaut, vous désactivez TOUS décorateurs. Ainsi, même celui qui restitue l'élément, son étiquette et le décorateur d'erreur. Qu'est-ce que vous ne voulez pas exactement? L'encapsuleur de la liste de définitions? – jason

Répondre

0

Je pense que cela va fonctionner pour enlever le décorateur HtmlTag:

$element = $searchForm->createElement('text', 'searchText', array('class'=>'onClickClear')); 
$element->removeDecorator('HtmlTag'); 
$searchForm->addElement($element); 
+0

Je viens de me rendre compte que cela ne répond pas à votre requête dans l'appel 'addElement()', mais je ne pense pas que ce soit possible - sauf si vous voulez créer votre propre sous-classe de Zend_Form, et vous pouvez faire ce que vous voulez. besoin de. –

3

Vous pouvez remplacer les décorateurs par défaut dans le createElement/addElement en passant un tableau de décorateurs à charger. Le décorateur "ViewHelper" rend généralement l'élément de formulaire lui-même, "Erreurs" pour les problèmes avec les validateurs, et "Label" pour votre élément de formulaire sont généralement à portée de main.

$searchForm->addElement('text', 'searchText', array(
    'class'=>'onClickClear', 
    'decorators'=>Array(
    'ViewHelper', 
    'Error', 
    array('Label', array('tag' => 'div')), 
    ), 
)); 
+1

Dans le code, je pense que le nom du décorateur est «Erreurs» et non «Erreur» :-) – helloworlder

2

Une autre façon est d'appeler setElementDecorators() juste après initialisant votre formulaire, qui fixe les décorateurs par défaut pour tous les éléments suivants. J'utilise le code ci-dessous pour très simple (une ou deux formes de terrain) que je veux juste affiché sur une ligne et qui ne nécessitent pas de validation étendue:

$form = new Zend_Form(); 
$form->setElementDecorators(array('ViewHelper', 'Label')); 
Questions connexes