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 :

Exemple de décorateur [ZF 1.11]


Sujet :

Zend_Form PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Par défaut Exemple de décorateur
    Bonjour,

    J'aimerai savoir s'il serait possible que l'un d'entre vous pourrait me montrer un code complet d'un Zend_Form simple utilisant des décorateurs ? Parce que je ne saisis vraiment pas la manière dont ceux-ci se mettent en place.

    Merci.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 77
    Par défaut
    Le mieux pour comprendre les décorateurs est de te faire des tests.

    Commence déjà par voir à quoi ressemble les décorateurs par défaut.
    $form->getElement('unChampTexte')->getDecorators(); et $form->getDecorators()

    Les décorateurs s'ajoutent les uns après les autres (une forme de pile). Ils s’englobent les uns derrière les autres. La configuration de 'placement' sur append ou prepend permet de "sortir" créer des voisins.

    Mon explication est peut-être pas très compréhensible, mais ça donne une idée.
    Sinon, ce que je peux dire, c'est qu'une fois l'utilisation des décorateurs comprise, c'est assez puissant à utiliser.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Par défaut
    Merci de me répondre.

    Je vais sûrement passer pour un novice mais... où faut il placer ce bout de code ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 77
    Par défaut
    Un peu où tu veux.

    Soit dans le controlleur, dans une vue, etc.
    Le but est de voir les décorateurs sous forme de tableau avec un var_dump ou print_r.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Par défaut
    En fait je commence à saisir.

    J'ai crée un dossier "maLib" dans library, puis un "Form" et "Decorator".

    Dans ce dossier (decorator), j'ai crée une classe "MaLib_Form_Decorator"

    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
    <?php
    class MaLib_Form_Decorator_Html extends Zend_Form_Decorator_Abstract
    {
      public function render($content) {
        $placement = $this->getPlacement();
        switch ($placement) {
          case self::APPEND:
            return $content . $this->_options['html'];
            break;
          case self::PREPEND:
            return $this->_options['html'] . $content;
            break;
        }
      }
    }
    Je souhaite faire marcher ce bout de formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $submit = new Zend_Form_Element_Submit('create');
    		$submit->setLabel('Créer le site')
    		       ->addPrefixPath('MaLib_Form_Decorator', '/library/maLib/Form/Decorator/', 'decorator')
    		       ->setDecorators(array(
    		         'ViewHelper',
    		         array('Html', array('html' => ' ou <a href="/">Annuler</a>'))
    		       ));
    (tuto pris ici : http://wiip.fr/content/un-decorator-...d_form_element )

    et j'ai l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Exception caught by form: Plugin by name 'Html' was not found in the registry; used paths: ZendX_JQuery_Form_Decorator_: ZendX/JQuery/Form/Decorator/ MaLib_Form_Decorator_: /library/maLib/Form/Decorator/ Zend_Form_Decorator_: Zend/Form/Decorator/

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 77
    Par défaut
    Tu es sur de ce chemin : "/library/maLib/Form/Decorator/" ?
    Le premier / représente la racine du système.
    Si "library" est dans ton répertoire de projet, normalement ceci devrait fonctionner :
    APPLICATION_PATH.'/../library/maLib/Form/Decorator/'

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Par défaut
    Est-ce que cela a un rapport avec le fait que je n'étends pas "Zend_Form" mais "ZendX_JQuery_Form" ?

    J'ai cette arborescence :

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Par défaut
    Il semble que l'erreur venait du fait qu'il fallait que j'appelle mon fichier "Html" dans

    /library/maLib/Form/Decorator/Html.php

    Mais cela m'a généré une autre erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: include_once(/maLib/Form/Decorator/Html.php): failed to open stream: No such file or directory in /var/www/html/zendTest/library/Zend/Loader/PluginLoader.php

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 77
    Par défaut
    Comme je te l'ai dit plus haut, le chemin vers ta library doit être faux.
    Enlève le premier slash (/) dans ton chemin.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Par défaut
    Merci

    J'ai une autre erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined index: html in /var/www/html/zendTest/library/maLib/Form/Decorator/Html.php on line 8

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Par défaut
    J'ai remplacé le 'html' par 'Html', et il me semble que cela fonctionne, sauf que le label ne fonctionne pas.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Par défaut
    Et pour finir cet épique décorateur, le label ne s'affichait pas à cause ... d'un accent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Checrche Exemple d'application C++ Builder - MySQL
    Par pcatric dans le forum C++Builder
    Réponses: 12
    Dernier message: 11/11/2002, 23h51
  2. [VB6] Lancer un service, par exemple Sql Server
    Par fea dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/10/2002, 14h07
  3. recherche exemple simple pour corba en c++
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 06/05/2002, 11h29

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