Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 27-10-2008 17:58:59

tonton flubb
Membre
Date d'inscription: 11-10-2008
Messages: 48
Site web

[Résolu] Zend_Form et mise en forme spéciale avec les décorateurs

Bonsoir à tous,

Je débute depuis quelques semaines avec le Zend Framework et j'ai déjà fait le tour de plusieurs fonctionnalités. Je viens de créer mes formulaires pour mon application, et je souhaite une mise en forme spéciale de mes champs. Rien de plus simple que le code source pour comprendre :

Voici un champ normal :

Code:

<p>
<label for="champ">Label : </label>
<input type="text" id="champ" name="champ" />
</p>

Voici un champ avec une erreur :

Code:

<p class="erreur"><span>Message d'erreur</span>
<label for="champ">Label : </label>
<input type="text" id="champ" name="champ" />
</p>

Est-ce que vous pourriez me donner quelques pistes pour mettre cela en forme avec les décorateurs s'il vous plaît ? J'essaye depuis une bonne semaine et je suis arrivé à mettre en forme mes champs comme le 1er exemple, mais je n'arrive pas à ajouter les erreurs sous la forme désirée.

Certains me parlent de développer mon propre décorateur. J'ai donc essayer de me lancer dans ce procédé, mais sans résultat apparant.

J'ai crée une classe au nom de My_Form_Decorator_Input dans laquelle j'ai ma fonction render().
Cette classe doit bien être ajoutée dans le dossier /library/My/Form/Decorator/ ?

Voici le code que j'utilise dans mon formulaire :

Code:

$form->addPrefixPath('My_Form_Decorator', 'My/Form/Decorator', 'decorator');

Pour mettre ce contrôleur en action, je dois bien mettre le code suivant :

Code:

$form->setElementDecorators(array(
            array('Input'),
            ...
));

Si quelques pouvais me donner quelques pistons ça serait vraiment sympa.
Merci d'avance, et bonne soirée.

Florent.

Dernière modification par tonton flubb (31-10-2008 15:25:01)


Florent - Développeur Web

Hors ligne

 

#2 28-10-2008 23:00:52

tonton flubb
Membre
Date d'inscription: 11-10-2008
Messages: 48
Site web

Re: [Résolu] Zend_Form et mise en forme spéciale avec les décorateurs

Bonsoir,

Personne ne sait m'aider sur le sujet ?

Bonne soirée à tous,
Florent.


Florent - Développeur Web

Hors ligne

 

#3 30-10-2008 11:38:50

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

Re: [Résolu] Zend_Form et mise en forme spéciale avec les décorateurs

Voici ce que je passerai comme décorateur aux élements :

Code:

'ViewHelper',
'Label',
array('Errors', array('placement' => 'prepend')),
array('HtmlTag', array('tag' => 'p')

Et je réécris le décorateur erreur comme ca :

Code:

class My_Form_Decorator_Errors extends Zend_Form_Decorator_Errors
{
  public function render($content)
  {
    $element = $this->getElement();
    $view = $element->getView();
    if (null === $view) {
      return $content;
    }
    $errors = $element->getMessages();
    if (empty($errors)) {
      return $content;
    }
    
    $htmltag = $element->getDecorator('Htmltag');
    if ($htmltag !== false)
        $element->getDecorator('Htmltag')->setOption('class', 'error');
    $formErrors_Helper = $view->getHelper('formErrors');
    $formErrors_Helper->setElementStart('<span');
    $formErrors_Helper->setElementSeparator('</span><span>');
    $formErrors_Helper->setElementEnd('</span>');
    return (parent::render($content));
  }
}

Le décorateur entour l'erreur de <span>, et il rajoute le classe 'erreur' au décorateur htmltag


----
Gruiiik !

Hors ligne

 

#4 30-10-2008 23:08:02

tonton flubb
Membre
Date d'inscription: 11-10-2008
Messages: 48
Site web

Re: [Résolu] Zend_Form et mise en forme spéciale avec les décorateurs

Bonsoir nORKy,

Ecoute je te dis un très très grand merci car cela fait exactement ce que je désire !
J'étais partis entre temps sur la piste de réécrire le Decorator, mais je n'arrivé pas à l'ajouter au formulaire ...!

J'aurais juste une dernière petite question pour être sûr de moi. Mon Decorator doit bien être dans le dossier suivant :?

Code:

application/
library/
  My/
    Form/
      Decorator/
        Errors.php
  Zend/
public/

Sinon pour ceux qui souhaite utiliser ce poste, il y a juste une petite modification à faire dans le Decorator Errors à la 4ème ligne du bas, il manque le ">" à la balise :

Code:

$formErrors_Helper->setElementStart('<span>');

Et ensuite, il suffit d'ajouter ce code au formulaire :

Code:

$form->addElementPrefixPath('My_Form_Decorator', 'My/Form/Decorator/', 'decorator');
$form->setElementDecorators(array(
    array('ViewHelper'),
    array('Label'),
    array('Errors', array('placement' => 'prepend')),
    array('HtmlTag', array('tag' => 'p'))
));

Florent - Développeur Web

Hors ligne

 

#5 31-10-2008 15:22:49

tonton flubb
Membre
Date d'inscription: 11-10-2008
Messages: 48
Site web

Re: [Résolu] Zend_Form et mise en forme spéciale avec les décorateurs

Je viens d'avoir la réponse sur le chat IRC.
Le dossier My est bien à placer dans le dossier library.

Ce sujet est donc résolu, encore un grand merci !


Florent - Développeur Web

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