Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 04-02-2013 23:56:37

neilime
Membre
Date d'inscription: 28-04-2009
Messages: 42

Création de Zend\Form\Element personnalisés au sein d'un module

Bonjour,

Je suis en train de créer un module qui à pour but de faciliter l'intégration de CKeditor (https://github.com/neilime/zf2-ckeditor-bundle)

Pour commencer je souhaite implémenter un élément de formulaire qui intègre CKEditor à un textarea

Je me trouve très rapidement bloqué face à cette problématique : comment proposer facilement l'utilisation de Zend\Form\Element personnalisés :

Code:

[lang=php]
$form = new \Zend\Form\Form();
$form->add(array(
    'name' => 'post_content',
    'type' => 'CKEditorBundle\Form\Element\CKEditor',
    'attributes' => array(
        'required' => true
    ),
    'options' => array(
        'label' => 'content'
    )
));
        
//Dans la view
$this->form($form);

En premier lieu, j'ai créé l'élément "CKEditorBundle\Form\Element" étendant la classe "\Zend\Form\Element\Textarea", son view helper "CKEditorBundle\Form\View\Helper\FormCKEditor", puis la configuration :

Code:

[lang=php]
return array(
    'view_helpers' => array(
        'invokables' => array(
            'formckeditor' => 'CKEditorBundle\Form\View\Helper\FormCKEditor'
        )
    )
);

Jusqu'ici tout va bien, mais vient le moment où je dois lier mon élément à son view helper.
Je regarde le code de la classe "Zend\Form\View\Helper\FormElement", et je m’aperçois que les helpers sont appelé en dur...

Je ne vois que deux solutions :

1. Ne pas utiliser l'helper "Zend\Form\View\Helper\FormElement" et donc forcer l'utilisateur du module à appeller manuellement le helper pour l'élement "CKEditorBundle\Form\Element" et donc se passer du très utile helper "form" qui effectue un render sur tous les éléments du formulaire.

2. Étendre la classe "Zend\Form\View\Helper\FormElement" afin d'overrider la fonction "render" et prendre en compte mon élément. Méthode "barbare" à mon goût qui perd tout aspect modulaire. Car il sera impossible d'utiliser des éléments personnalisés issus de modules différents utilisant ce même procédé.

J'imagine donc qu'il existe une alternative à mes deux idées car sinon je ne vois pas comment étendre proprement les formulaires avec ZF2.

Je suis donc attentif à toutes les approches pouvant régler cette problématique.
Merci d'avance pour vos réponses

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages