Zend_Form : ajouter du code HTML

Ah Zend_Form, qu'est ce que tu peux être compliqué ! Vous devez déjà avoir rencontré ce problème : ajouter du code HTML en plein milieu de votre formulaire. Ca peut être utile pour diviser son formulaire en plusieurs sections, pour afficher des instructions... Vous pouvez évidemment utiliser des display groups, mais parfois ça ne fait pas l'affaire. Il existe une aide de vue nommée formNote qui peut nous aider mais malheureusement il nous manque un élément de formulaire qui l'utilise. Il faut donc l'écrire soi-même :

<?php
class My_Form_Element_Html extends Zend_Form_Element_Xhtml
{
    
// On utilise l'aide de vue formNote
    
public $helper 'formNote';

    public function 
loadDefaultDecorators()
    {
        
// Le seul décorateur dont on a besoin, c'est celui qui appelle formNote
        
$this->addDecorator('ViewHelper');
    }

?>

Placez ce code dans library/My/Form/Element/Html.php en prenant soin de remplacer My par le préfixe de votre application.

Vous pouvez ensuite l'utiliser de cette façon :

<?php
class My_Form_Foo extends Zend_Form
{
    public function 
init()
    {
        
$this->addPrefixPath(
            
'My_Form_Element',
            
'My/Form/Element/',
            
Zend_Form::ELEMENT
        
);

        
// Ajout d'une barre horizontale
        
$this->addElement(
            
'html',
            
'hr'// Nom de l'élément
            
array('value' => '<hr>')
        );
    }
}
?>

Add new comment