Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 08-12-2009 16:49:41

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Zend_Form_Decorator et les decorators customiser

Bonjour... smile

Comment faire pour avoir des décorateurs personnalisé...

j'ai fait un decorateur Brts_Form_Decorateur_Indentator qui etend Zend_Form_Decorator_Abstract (sans inclusion de Zend/Form/Decorator/Abstract.php)

J'ai ma lib Zend et ma lib Brts perso dans un dossier Zend/ et Brts/ déclarer à l'include path...
J'ai mis mon décorator perso dans Brts/Form/Decorator/Indentator.php comme fait pour Zend...

J'ai donc plus qu'a voir pour l'inclusion depuis mon form...
voila le décorateur Form:

Code:

class alternatestylesheetForm extends Zend_Form
{
    public function __construct($options = null)
    {
        // on appel le constucteur de Zend_Form
        parent::__construct($options);

        // on charge les decorateurs, helpers, et elements personnaliser
//        $loader = new Zend_Loader_PluginLoader();
//        $loader->addPrefixPath('Brts_Decorateur', 'Brts/Form/decorator');


        // on détermine les paramètres du formulaire
        $this->setAction('/'.self::$userNamespace->langue.'/'.self::$userNamespace->module.'/alternatestylesheet/submit')
             ->setName('chooseAlternatStylesheet')
             ->setMethod('post')
             ->setEnctype(Zend_Form::ENCTYPE_URLENCODED)
             ->addElementPrefixPath('Brts_Form_Decorator', 'Brts/Form/Decorator/', 'decorator');

        // on definit le tableau MultiOption pour le <select> stylesheet
        $arrayStyleSheetMultiOptions = array('default' => 'Style par default', 'choix1' => '1', 'choix2' => '2');

        $stylesheet = new Zend_Form_Element_Select('stylesheet');
        $stylesheet->setLabel('stylesheet')
                   ->setAttribs(array(
                       'class'    => 'court',
                       'size'     => '1',
                       'tabindex' => '1'
                   ))
                   ->removeDecorator('label')
                   ->removeDecorator('HtmlTag')
 //                 ->addPrefixPath('Brts_Decorator',
 //                       'Brts/Form/decorator',
 //                       'decorator')
                   ->setMultiOptions($arrayStyleSheetMultiOptions)
                   ->setRequired(true);

        $btn_envoi = new Zend_Form_Element_Submit('envoi');
        $btn_envoi->setLabel('Envoyer')
                  ->removeDecorator('DtDdWrapper')
 //                 ->addPrefixPath('Brts_Decorator',
 //                       'Brts/Form/decorator',
 //                       'decorator')
                  ->setAttribs(array(
                      'class'    => 'bouton_form',
                      'tabindex' => '2',
                      'title'    => 'Appliquer le style choisi'
                  ));
 
       // on ajoute tout les éléments au formulaire
        $this->addElements(
            array(
                $stylesheet,
                $btn_envoi
        ));

        // on réinisialise les décorateurs
        $this->clearDecorators();

        // definition des décorateurs communs au formulaire via "decorateur de vue manuel" 
        $this->setDecorators(array(
            array('ViewScript', array('script' => 'show.phtml'))
        ));

        $stylesheet->setDecorators(array('Indentator'));
        $btn_envoi->setDecorators(array('Indentator'));
    }
}

j'ai tester ceci dans le form:

Code:

// on charge les décorateurs, helpers, et éléments personnaliser
$loader = new Zend_Loader_PluginLoader();
$loader->addPrefixPath('Brts_Decorateur', 'Brts/Form/decorator');

Marche pas !!!
J'ai tester sur le form (this):

Code:

$this->addElementPrefixPath('Brts_Form_Decorator', 'Brts/Form/Decorator/', 'decorator');

Marche pas !!!
J'ai essayer sur l'element:

Code:

$element->addPrefixPath('Brts_Decorator',
                                      'Brts/Form/Decorator/',
                                      'decorator');

Marche pas !
J'appel bien sur via :
$element->setDecorators(array('Indentator'));
voici l'erreur:

Warning: Plugin by name 'Indentator' was not found in the registry; used paths: Brts_Form_Decorator_: Brts/Form/Decorator/ Zend_Form_Decorator_: Zend/Form/Decorator/ in C:\wamp\www\0_toolbox\tools\Zend\Form\Element.php on line 1943

une idée ?

Dernière modification par BeRoots (21-01-2010 03:27:21)


wink Non au language SMS sur nos forums wink

Hors ligne

 

#2 10-12-2009 22:57:36

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: Zend_Form_Decorator et les decorators customiser

Une erreur de chemin ... je ferme le sujet wink

Dernière modification par BeRoots (11-12-2009 04:36:19)


wink Non au language SMS sur nos forums wink

Hors ligne

 

#3 21-01-2010 03:27:00

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: Zend_Form_Decorator et les decorators customiser

Voila... Toujours sous Zend_Form avec un problème de compréhension...

Voila le formulaire version corrigé:

Code:

class alternatestylesheetForm extends Zend_Form
{
    public function __construct($options = null)
    {
        // on appel le constucteur de Zend_Form
        parent::__construct($options);
 
        // on détermine les paramètres du formulaire
        $this->setAction('/'.self::$userNamespace->langue.'/'.self::$userNamespace->module.'/alternatestylesheet/submit')
             ->setName('chooseAlternatStylesheet')
             ->setMethod('post')
             ->setEnctype(Zend_Form::ENCTYPE_URLENCODED)
             ->addElementPrefixPath('Brts_Form_Decorator', 'Brts/Form/Decorator/', 'decorator');
 
        // on definit le tableau MultiOptions pour le <select> stylesheet
        $arrayStyleSheetMultiOptions = array('default' => 'Style par default', 'choix1' => '1', 'choix2' => '2');
 
        $stylesheet = new Zend_Form_Element_Select('stylesheet');
        $stylesheet->setLabel('stylesheet')
                   ->setAttribs(array(
                       'class'    => 'court',
                       'size'     => '1',
                       'tabindex' => '1'
                   ))
                   ->removeDecorator('label')
                   ->removeDecorator('HtmlTag')
                   ->setMultiOptions($arrayStyleSheetMultiOptions)
                   ->setRequired(true);
 
        $btn_envoi = new Zend_Form_Element_Submit('envoi');
        $btn_envoi->setLabel('Envoyer')
                  ->removeDecorator('DtDdWrapper')
                  ->setAttribs(array(
                      'class'    => 'bouton_form',
                      'tabindex' => '2',
                      'title'    => 'Appliquer le style choisi'
                  ));
 
       // on ajoute tout les éléments au formulaire
        $this->addElements(
            array(
                $stylesheet,
                $btn_envoi
        ));
 
        // on réinisialise les décorateurs
        $this->clearDecorators();
 
        // definition des décorateurs communs au formulaire via "decorateur de vue manuel" 
        $this->setDecorators(array(
            array('ViewScript', array('script' => 'show.phtml'))
        ));
 
        $stylesheet->setDecorators(array('Indentator'));
        $btn_envoi->setDecorators(array('Indentator'));
    }
}

Je voudrai faire un décorateur personnaliser... Mon soucis est que la méthode setDecorators(array('Indentator')); des élements plante ma page...

En gros pour le moment mon décorateur est une fonction vide juste un (echo de test)...  Le problème est que tout fonctionne si je commente les deux setDecorators en fin du script si dessus... Si je les mets, j'ai plantage de ma page... Erreur http sous Safari:

Safari ne parvient pas à ouvrir la page.
Safari ne parvient pas à ouvrir la page « http://zf.at-home-media.loc/fr/default/ … stylesheet ». L’erreur est : « erreur inconnue » (kCFErrorDomainWinSock:10054) Choisissez Aide > Signaler un bogue à Apple, notez le numéro d’erreur et décrivez ce que vous avez fait avant l’affichage du présent message.

Idem sous FF, IE... pas moyen d'ouvrir la page...

Une idée sur le pourquoi ?


wink Non au language SMS sur nos forums wink

Hors ligne

 

#4 21-01-2010 08:39:49

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Zend_Form_Decorator et les decorators customiser

Bizarrement, ton erreur ne correspond pas à un problème de développement PHP...
Je ne suis pas sur, mais il ne faut pas la traiter par rapport à ton code PHP

On est d'accord que c'est la même erreur sur les navigateurs ?
Quel est ta situation local ? OS ? réseau ? fait partie d'un domaine ? Utilises-tu un proxy ?


----
Gruiiik !

Hors ligne

 

#5 22-01-2010 09:58:40

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: Zend_Form_Decorator et les decorators customiser

oui tout navigateur.... la page ne charge plus...
sinon je bosse en localhost sous 127.0.0.1 via XP/wampServer2... l'application marche nickel... le formulaire s'affiche bien si je commente les décorateurs... Une fois les décorateurs appeler ... plantage...une idée?
Pour moi c'est php (apache ne prend pas de restriction... les navigateurs n'y sont pour rien...


wink Non au language SMS sur nos forums wink

Hors ligne

 

#6 22-01-2010 12:01:17

nosferapti
Membre
Date d'inscription: 10-01-2010
Messages: 40

Re: Zend_Form_Decorator et les decorators customiser

est ce que tu peux nous dire l'erreur que as avec un client HTTP en ligne de commande comme cURL par exemple
et sinon quand tu essayes de l'ouvrir avec Firefox tu obtiens quoi exactement comme message d'erreur ?


GNAP !

Hors ligne

 

#7 23-01-2010 01:03:38

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: Zend_Form_Decorator et les decorators customiser

le message FF

Connexion réinitialisée

la connexion avec le serveur a été réinitialisée pendant le chargement de la page.

    *   Le site est peut-être temporairement indisponible ou surchargé. Réessayez plus
          tard ;

    *   Si vous n'arrivez à naviguer sur aucun site, vérifiez la connexion
          au réseau de votre ordinateur ;

    *   Si votre ordinateur ou votre réseau est protégé par un pare-feu ou un proxy,
          assurez-vous que Firefox a l'autorisation d'accéder au Web.

De plus me pert le données en session...

si QQ1 à une idée ?

Dernière modification par BeRoots (23-01-2010 01:04:15)


wink Non au language SMS sur nos forums wink

Hors ligne

 

#8 24-01-2010 21:08:13

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: Zend_Form_Decorator et les decorators customiser

personne pour une idée ?


wink Non au language SMS sur nos forums wink

Hors ligne

 

#9 25-01-2010 09:42:07

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Zend_Form_Decorator et les decorators customiser

t'as des infos dans le log de ton service web ?


----
Gruiiik !

Hors ligne

 

#10 28-01-2010 20:42:57

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: Zend_Form_Decorator et les decorators customiser

/fr/default/alternatestylesheet HTTP/1.1" 500 11525

erreur 500 quand j'active le decorateur...
une idée ?


wink Non au language SMS sur nos forums wink

Hors ligne

 

#11 28-01-2010 22:21:35

nosferapti
Membre
Date d'inscription: 10-01-2010
Messages: 40

Re: Zend_Form_Decorator et les decorators customiser

BeRoots a écrit:

erreur 500 quand j'active le decorateur...

c'est très probablement une boucle infinie si tu as une erreur 500
est ce que tu peux nous montre le code de Brts_Form_Decorateur_Indentator ?


GNAP !

Hors ligne

 

#12 29-01-2010 08:02:55

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: Zend_Form_Decorator et les decorators customiser

Code:

class Brts_Form_Decorator_Indentator extends Zend_Form_Decorator_Abstract
{
    /*
     * Rendu de l'element avec application du décorateur.
     *
     * @name    render
     * @access  public
     * @return  object Zend_Form_Elements object
     */
    public function render($content)
    {
        $element = $this->getElement();
        if (!$element instanceof Zend_Form_Element) {
            return $content;
        }
        if (null === $element->getView()) {
            return $content;
        }

        $separator = $this->getSeparator();
        $placement = $this->getPlacement();
//        $label     = $this->buildLabel();
//        $input     = $this->buildInput();
//        $errors    = $this->buildErrors();
//        $desc      = $this->buildDescription();

        $output = "\t".$element."\n";

        switch ($placement) {
            case (self::PREPEND):
                return $output . $separator . $content;
            case (self::APPEND):
            default:
                return $content . $separator . $output;
        }
    }
}

Idem pour

Code:

class Brts_Form_Decorator_Indentator extends Zend_Form_Decorator_Abstract
{
    /*
     * Rendu de l'element avec application du décorateur.
     *
     * @name    render
     * @access  public
     * @return  object Zend_Form_Elements object
     */
    public function render($content)
    {
          echo 'coucou';
    }
}

une idée ?


wink Non au language SMS sur nos forums wink

Hors ligne

 

#13 29-01-2010 08:50:58

nosferapti
Membre
Date d'inscription: 10-01-2010
Messages: 40

Re: Zend_Form_Decorator et les decorators customiser

s'il y a une boucle infinie même avec "echo coucou" ça veut dire que le problème est pendant le chargement de la classe
mais c'est trop compliqué à suivre pour moi donc il faudrait que tu utilises un débuggeur comme Xdebug par exemple : http://xdebug.org/
c'est une extension à installer et ensuite tu récupèreras dans un fichiers la liste des appels de fonctions et de méthodes et peut-être que tu verras où se trouve la boucle

Dernière modification par nosferapti (29-01-2010 08:51:24)


GNAP !

Hors ligne

 

#14 29-01-2010 14:14:26

BeRoots
Membre
Date d'inscription: 15-05-2008
Messages: 79

Re: Zend_Form_Decorator et les decorators customiser

pas oyen avec zend_Debug ?
ou encore du coté de firebug, firephp sous firefox ?


wink Non au language SMS sur nos forums wink

Hors ligne

 

#15 29-01-2010 20:40:09

nosferapti
Membre
Date d'inscription: 10-01-2010
Messages: 40

Re: Zend_Form_Decorator et les decorators customiser

BeRoots a écrit:

pas oyen avec zend_Debug ?
ou encore du coté de firebug, firephp sous firefox ?

je ne connais pas donc je n'ai rien contre mais d'après ce que j'ai vu il s'agit juste d'ajouter une ligne pour avoir un affichage à un endroit donnée :
http://framework.zend.com/manual/fr/zen … mping.html
http://www.firephp.org/

alors que Xdebug fournit le détail complet de tous les appels ce qui m'a déjà fait gagner beaucoup de temps :
http://xdebug.org/docs/execution_trace


GNAP !

Hors ligne

 

#16 12-04-2010 11:22:55

Sishare
Membre
Date d'inscription: 09-02-2010
Messages: 89

Re: Zend_Form_Decorator et les decorators customiser

Salut, je redéterre le sujet, j'ai créer un décorateur et j'ai la même erreur de path que tu avais en premier. J'ai mis mon décorateur dans library/zend/form/decorator/ or mon addprefix ne fonctionne pas. pourrait tu m'éclairé sur ton arborecence et ton include stp

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