2009-05-28 4 views
0

Est-il possible de modifier un attribut html d'un Zend_Form_Element dans un décorateur précédemment ajouté?Comment modifier un attribut d'un Zend_Form_Element dans un décorateur

Disons que j'ai un décorateur nommé RichTextArea. Quand je l'ajoute à un Zend_Form_Element_Textarea, je veux que le décorateur ajoute la classe "riche" à la zone de texte.

La sortie finale devrait ressembler à ceci:

<textarea name="content" id="content" class="rich" />

Répondre

4

Il est possible, mais la syntaxe dépend un peu de la façon dont vous construisez la forme. Manière la plus simple est de le faire sur l'élément lui-même comme vous l'ajoutez:

$element = new Zend_Form_Element_Text('something'); 
$element->class = 'rich'; 
$form->addElement($element); 

ou si vous Attribuée masse les décorateurs, par exemple:

$element = new Zend_Form_Element_Text('something'); 
$element->setDecorators(array(
    'Errors', 
    'Label', 
    array(array('row' => 'HtmlTag'), array('tag' => 'div')) 
)); 

[...] 

$decorator = $element->getDecorator('row'); 
$decorator->setOption('class', 'rich'); 

Si vous utilisez un éditeur de texte comme TinyMCE ou similaire, une autre option pourrait être de créer un élément de formulaire personnalisé qui étend Zend_Form_Element_Textarea et y ajoute toujours votre classe.

+0

Je pense que la seule vraie solution sera d'étendre Zend \ _Form \ _Element \ _Textarea comme vous l'avez dit ... Je vais accepter votre solution car je ne vois pas d'autre moyen de le faire – Sylvain

Questions connexes