Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-10-2011 14:22:02

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Ajouter un ZendX AutoComplete dans un formulaire existant, décorateurs

Salut à tous,

J'ai un léger soucis avec un autocomplete Zend_X_jQuery ('id_city'). Il marche tres bien hors d'un formulaire, tout se passe bien. Ensuite, j'ai voulu le rajouter à mon formulaire.

Il semble qu'il y ai un soucis avec les décorateurs. Voici l'erreur, et le code qui suit.

Code:

Warning: Exception caught by form: Cannot render jQuery form element without at least one decorator implementing the 'ZendX_JQuery_Form_Decorator_UiWidgetElementMarker' interface. Default decorator for this marker interface is the 'ZendX_JQuery_Form_Decorator_UiWidgetElement'. Hint: The ViewHelper decorator does not render jQuery elements correctly. Stack Trace: #0 C:\Users\FP\web\librairies\zend\library\Zend\Form\Element.php(2029): ZendX_JQuery_Form_Element_UiWidget->getDecorators() #1 C:\Users\FP\web\librairies\zend\library\Zend\Form\Decorator\FormElements.php(101): Zend_Form_Element->render() #2 C:\Users\FP\web\librairies\zend\library\Zend\Form.php(2904): Zend_Form_Decorator_FormElements->render('') #3 C:\Users\FP\web\librairies\zend\library\Zend\Form.php(2920): Zend_Form->render() #4 C:\Users\FP\web\wamp\www\my-websites\familife\trunk\web\www\application\modules\backoffice\views\scripts\agency\edit.phtml(4):

Code:

...
$elements['first_name'] = new Zend_Form_Element_Text('first_name');
        $elements['first_name']->setLabel('Prénom : ')
        ->setRequired(true)
        ->addFilter('StripTags')
        ->addFilter('StringTrim')
        ->addValidator('notEmpty')
        ->getValidator('notEmpty')->setMessage('msg agency must first name');
        
$elements['last_name'] = new Zend_Form_Element_Text('last_name');
        $elements['last_name']->setLabel('Nom : ')
        ->setRequired(true)
        ->addFilter('StripTags')
        ->addFilter('StringTrim')
        ->addValidator('notEmpty')
        ->getValidator('notEmpty')->setMessage('msg agency must last name');

$elements['id_city']= new ZendX_JQuery_Form_Element_AutoComplete('ac');
        $elements['id_city']->setLabel('Ville ')
        ->setJQueryParam('source', '/backoffice/agency/autocompleteajaxcity')
        ->setJQueryParam('minLength', $this->_config->autocomplete->max_cars);
...

Les décorateurs :

Code:

 /////////////////////////////////////////////////////////////////////////////////////////
 // DECORATORS ///////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////////////////

        $this->setElementDecorators(array( 
            'ViewHelper',
             //array('Errors', array('class' => 'formErrors', 'placement' => 'prepend')),            
            array(array('data' => 'HtmlTag'),  array('tag' =>'td', 'class'=> 'element')),
            array('Label', array('tag' => 'td')),
            array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
        ));
        
        $elements['submit']->setDecorators(array('ViewHelper',
            array(array('data' => 'HtmlTag'),  array('tag' =>'td', 'class'=> 'element')),
            array(array('emptyrow' => 'HtmlTag'),  array('tag' =>'td', 'class'=> 'element', 'placement' => 'PREPEND')),
            array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
            ));
        
        $this->setDecorators(array(
            array('FormErrors', array('label'=>'')),           
            'FormElements',            
            array('HtmlTag', array('tag' => 'table', 'class'=> 'table_edit')),
            'Form'           
        ));

J'ai bien cherché sur le net, mais sans grand succès :

Code:

    public static $formJQueryElements = array(
        array('UiWidgetElement', array('tag' => '')), // it necessary to include for jquery elements
        array('Errors'),
        array('Description', array('tag' => 'span')),
        array('HtmlTag', array('tag' => 'td')),
        array('Label', array('tag' => 'td', 'class' =>'element')),
        array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
        );

Une idée ?
Merci

Fabrice

Hors ligne

 

#2 24-10-2011 15:10:25

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Ajouter un ZendX AutoComplete dans un formulaire existant, décorateurs

C'est une volonté de ne pas utiliser les décorateurs par défaut?
Ton formulaire étant bien la classe ZendX_JQuery_Form (ou un truc dans le style) et non Zend_Form?

Hors ligne

 

#3 24-10-2011 16:25:38

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Ajouter un ZendX AutoComplete dans un formulaire existant, décorateurs

Oui, je n'utilise pas les décorateurs par défaut. Cela ne change rien au problème je pense.

Le formulaire est un Zend_Form 'normal', effectivement.

Fabrice.

Hors ligne

 

#4 03-11-2011 17:10:08

jean
Membre
Date d'inscription: 25-08-2008
Messages: 107

Re: Ajouter un ZendX AutoComplete dans un formulaire existant, décorateurs

Regarde ce blog, surtout les dernières lignes pour rendre la vue.

http://cientouno.be/blog/categorie/zend-framework

J'ai aussi cet excellent tutorial :

http://www.slideshare.net/dennisdc/intr … ry-3531425

Jean

Dernière modification par jean (03-11-2011 17:19:08)

Hors ligne

 

#5 07-11-2011 14:35:32

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Ajouter un ZendX AutoComplete dans un formulaire existant, décorateurs

Je ne pense pas que ce soit un problème de vue, mais uniquement de "décorateurs"

Mais je ne sais pas comment faire... sad

Fabrice

Hors ligne

 

#6 07-11-2011 15:00:35

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: Ajouter un ZendX AutoComplete dans un formulaire existant, décorateurs

je t'ai pourtant expliqué sur developpez.com il me semble que la fonction setDecorators() retire tout les décorateurs par defaut. il faut donc sur ton element ZendX ajouter le decorator UiWidgetElement

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