Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 18-04-2013 18:14:02

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

AutoComplete : Erreur de décorateur UiWidgetElement pourtant utilisé

Bonjour,
J'essai d'implementer un autocomplete avec Zend Form. Et bien sur, encore un soucis de décorators. Pourtant, je fais bien ce que préconise la doc. Et j'ai cette erreur :

Code:

ZendX_JQuery_Form_Exception: 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. in /usr/share/php/libzend-framework-php/1/extras/library/ZendX/JQuery/Form/Element/UiWidget.php on

Il faut donc mettre le decorateur UiWidgetElement et c'est ce que je fais pourtant :

Code:

<?php
class Frontoffice_Form_Find extends Zend_Form {

    public $elementDecorators = array(
        'ViewHelper',
        'Errors',
        array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
        array('Label', 
               array('tag' => 'td')),
        array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
    );

    public $defaultDecorators =array(
        'FormElements',
        array('HtmlTag',
               array('tag' => 'table','class' => 'zend_form responsive' )
        ),
        'Form'
     );

    public function loadDefaultDecorators()  {        
        $this->setDecorators($this->defaultDecorators);
        $this->setElementDecorators ($this->elementDecorators);
    }

    public function init() {
        $config = Zend_Registry::get('config');
        
        $action =  $this->getView()->url(array(), 'list_place');

        $this->setMethod('post')
        ->setAction("#")
        ->setAttrib('id','geocoding_form')
        ->setAttrib('class','forms');
        
        $address = new Zend_Form_Element_Text('ANN_ADRESSE_1');
        $address->setLabel('address')
        ->addFilter('StripTags')
        ->addFilter('StringTrim')
        ->setAttrib('maxlength','255')
        ->setAttrib('title',Zend_Registry::get('Zend_Translate')->translate('tooltip choice address'))
        ->addValidator('notEmpty')
        ->getValidator('notEmpty')->setMessage('msg address');
        ///////////////////////////////////////////
       
       // Add Autocomplete Element
       $city = new ZendX_JQuery_Form_Element_AutoComplete(
                "ac1", array('label' => 'Autocomplete:')
            );
        $city->setJQueryParams(array('source' => array('New York',
                                             'Berlin',
                                             'Bern',
                                             'Boston')));
        $city->setDecorators(
                    array(
                        'UiWidgetElement',
                        array('ViewScript', array('class' => 'RegElement'))
                    )
            );

        ///////////////////////////////////////////
        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setValue('Submit')
        ->setLabel('Valider')
        ->setAttrib('class','button')
        ->setDecorators($this->submitDecorators)
        ;          

        $this->addElements(array($address,$city,$submit));
    
   }

}

Dernière modification par __fabrice (18-04-2013 18:15:54)

Hors ligne

 

#2 24-04-2013 10:45:15

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

Re: AutoComplete : Erreur de décorateur UiWidgetElement pourtant utilisé

Bon, le problème vient des décorateurs "généraux" des éléments des formulaires :

Code:

 public $elementDecorators = array(
        'ViewHelper',
        'Errors',
        array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element')),
        array('Label', array('tag' => 'td')),
        array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
    );

    public $defaultDecorators =array(
        'FormElements',
        array('HtmlTag', array('tag' => 'table','class' => 'zend_form responsive')),
        'Form'
     );

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


    public function loadDefaultDecorators()  {        
        $this->setDecorators($this->defaultDecorators);        
       // $this->setElementDecorators($this->elementDecorators);        
    }

si je dé-commente cette ligne 

Code:

// $this->setElementDecorators($this->elementDecorators);

j'ai l'erreur, sinon, çà marche correctement (sans l'habillage qu'il faut, évidemment).

Donc, à priori, cela vient du décorateur des éléments du formulaire. Mais je vois pas..

Une idée ?

Merci
Fabrice

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