IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Form PHP Discussion :

AutoComplete : Erreur de décorateur UiWidgetElement pourtant utilisé


Sujet :

Zend_Form PHP

  1. #1
    Membre habitué
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Points : 194
    Points
    194
    Par défaut 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 :
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    <?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));
     
       }
     
    }

  2. #2
    Membre habitué
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Points : 194
    Points
    194
    Par défaut
    Bon, le problème vient des décorateurs "généraux" des éléments des formulaires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     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 : Sélectionner tout - Visualiser dans une fenêtre à part
    // $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. Mai sje vois pas.. une idée ?

    Merci
    Fabrice

Discussions similaires

  1. erreur bizarre dans Flex, pourtant ça marche.
    Par clavier12AZQSWX dans le forum Flex
    Réponses: 3
    Dernier message: 24/08/2009, 16h33
  2. [Lib] erreur sur shared librairies pourtant presente
    Par mikebranque dans le forum C++
    Réponses: 4
    Dernier message: 07/11/2008, 21h34
  3. [NB 6.1] 0 Erreur 0 Warning et pourtant BUILD FAILED
    Par amoulart dans le forum NetBeans
    Réponses: 1
    Dernier message: 20/06/2008, 16h41
  4. Réponses: 2
    Dernier message: 05/10/2007, 19h24
  5. Réponses: 1
    Dernier message: 28/09/2006, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo