Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Form
Zend_Form Forum d'entraide pour le composant Zend_Form du Zend Framework (création de formulaires, helpers, AJAX etc.). Avant de poster -> FAQ Zend_Form.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/09/2011, 11h05   #1
Membre du Club
 
Homme Brice
Ingénieur d'études en développements techniques
Inscription : novembre 2005
Messages : 190
Détails du profil
Informations personnelles :
Nom : Homme Brice
Âge : 40
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en développements techniques
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2005
Messages : 190
Points : 55
Points : 55
Envoyer un message via MSN à bpdelavega
Par défaut Ajouter un span à la suite d'un TextArea

Bonjour,

J'aimerai connaître la syntaxe exacte pour ajouter par exemple le tag HTML suivant :
Citation:
<span class="maclass">Votre message ne doit pas comporter plus de 250 caractères</span>
à la suite de ma balise TextArea dans mon objet Zend_Form, voici mon élément actuel :

Code :
1
2
3
4
5
6
7
8
 
$message = new App_Form_Element_Textarea('message');
        $message->setLabel(App_Translate::translate('message'))
            ->setAttrib('id', 'message')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty')->addErrorMessage(App_Translate::translate('Please mention your request above!'));
bpdelavega est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 13h06   #2
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Tu as essayé setDescription() ?
Il me semble que cela permet d'ajouter une description à l'élément que tu souhaites et il ne te reste donc plus qu'à jouer au niveau du css
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 13h10   #3
Membre du Club
 
Homme Brice
Ingénieur d'études en développements techniques
Inscription : novembre 2005
Messages : 190
Détails du profil
Informations personnelles :
Nom : Homme Brice
Âge : 40
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en développements techniques
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2005
Messages : 190
Points : 55
Points : 55
Envoyer un message via MSN à bpdelavega
Merci pour ta réponse, tu veux dire une syntaxe du style :

Code :
1
2
3
4
5
6
7
8
9
$message = new App_Form_Element_Textarea('message');
        $message->setLabel(App_Translate::translate('message'))
            ->setAttrib('id', 'message')
            ->setDescription('titi', 'totototototo')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty')->addErrorMessage(App_Translate::translate('Please mention your request above!'));
Je l'ai fait, mais ça n'apparait pas dans le markup, il me semble que c'est addDecorateur('htmlTag','jljflkdsjflkdsjflk') mais je ne suis pas sûr...
bpdelavega est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 14h41   #4
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
Bonjour,

en effet, il te suffit d'utiliser "setDescription" mais de la façon suivante:
Code :
1
2
3
 
$message->setDescription ("Votre message ne doit pas comporter plus de 250 caractères"); // on affecte à l'élément la description souhaitée
$message->setDecorators($decoratorMessage); // décorateur de l'élément "$message" à définir de manière à personnaliser la façon dont tu veux que ce message s'affiche dans ton formulaire.
Regarde ce lien pour ce qui concerne les décorateurs, il y a un exemple pour le cas "setDescription"
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 14h13   #5
Membre du Club
 
Homme Brice
Ingénieur d'études en développements techniques
Inscription : novembre 2005
Messages : 190
Détails du profil
Informations personnelles :
Nom : Homme Brice
Âge : 40
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en développements techniques
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2005
Messages : 190
Points : 55
Points : 55
Envoyer un message via MSN à bpdelavega
Bonjour merci pour ta réponse,
par contre je n'ai pas de décorateur, du coup je le mets en place de la façon suivante :
Code :
1
2
3
4
5
6
7
8
9
 
$message = new App_Form_Element_Textarea('message');
        $message->setLabel(App_Translate::translate('message'))
            ->setAttrib('id', 'message')
            ->setRequired(true)
            ->setDescription('Ceci est test')
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('NotEmpty')->addErrorMessage(App_Translate::translate('Please mention your request above!'));
Mais bon je ne vois rien s'afficher.
En fait j'ai des décorateur pour les labels et les messages d'erreurs, dans des objets distincts, moi je voulais juste rajouter un bout de code HTML pour ajouter un SPAN, il me semble que HtmlTag sert à ça mais je ne connais pas la syntaxe correspondante à ce que j'ai déjà implémenté
bpdelavega est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 15h35   #6
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
Peux tu afficher le code ou tu défini tes décorateurs?
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 15h44   #7
Membre du Club
 
Homme Brice
Ingénieur d'études en développements techniques
Inscription : novembre 2005
Messages : 190
Détails du profil
Informations personnelles :
Nom : Homme Brice
Âge : 40
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en développements techniques
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2005
Messages : 190
Points : 55
Points : 55
Envoyer un message via MSN à bpdelavega
Dans library/App/Form/Decorator/FormsErrors.php
Code :
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
 
<?php
 
class App_Form_Decorator_FormErrors extends Zend_Form_Decorator_Abstract
{
    public function __construct($options = null)
    {
        parent::__construct($options);
        //setMarkupListStart('<ul class="form_errors">');
    }
 
    public function render($content)
    {
        $form = $this->getElement();
        if (!$form instanceof Zend_Form) {
            return $content;
        }
 
        $message = $this->getOption('message');
        if (empty($message)){
            $message = '';
        }
        // use the forms translator for the summary message
        $translator = $form->getTranslator();
        if ($translator !== null){
            $message = $translator->translate($message);
        }
 
        $view = $form->getView();
        if (null === $view) {
            return $content;
        }
 
        $errors  = $form->getMessages();
        if (empty($errors)) {
            return $content;
        }
 
        $markup = '<div class="form_errors_block">';
        if (!empty($message)){
            $markup .= '<p class="message">' . $message . '</p>';
        }
        $markup .= '<ul class="form_errors">';
 
        foreach ($errors as $name => $list) {
            $element = $form->$name;
 
            if ($element instanceof Zend_Form_Element) {
 
                $label = $element->getLabel();
                if (empty($label)) {
                    $label = $element->getName();
                }
                $label = trim($label);
                if (empty($label)) {
                    $label = '';
                }
                if (null !== ($translator = $element->getTranslator())) {
                    $label = $translator->translate($label);
                }
 
                $error_msg = '';
                foreach ($list as $key => $error) {
                    $error_msg = $view->escape($error);
                    break; // just do the first error message for a field
                }
 
                $markup .= '<li><span class="label">' . $label . '</span>'
                        . $error_msg . '</li>';
            }
            else{
                if (is_string($list)){
                    $markup .= '<li>' . $list . '</li>';
                }
            }
        }
 
        $markup .= '</ul></div>';
 
        switch ($this->getPlacement()) {
            case self::APPEND:
                return $content . $this->getSeparator() . $markup;
            case self::PREPEND:
                return $markup . $this->getSeparator() . $content;
        }        
 
        return $content;  
    }
 
}
Dans library/App/Form/Decorator/Label.php
Code :
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
 
<?php
class App_Form_Decorator_Label extends Zend_Form_Decorator_Label
{
    /**
     * Get class with which to define label
     *
     * Appends 'error' to class, if there is an error in the form for the
     * associated element
     *
     * @return string
     */
    public function getClass()
    {
        $class = parent::getClass();
 
        $element = $this->getElement();
 
        if ($element->hasErrors()){
            if (!empty($class)){
                $class .= ' invalid';
            }else{
                $class = 'invalid';
            }
        }
 
        return $class;
    }
}
bpdelavega est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 16h03   #8
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
Tu peux soit redéfinir un décorateur personnalisé pour les descriptions comme tu l'as fait pour l'affichage des labels et des erreurs, soit tu appliques à ton élément un décorateur du style:
Code :
1
2
3
 
$decoratorMessage = array ('ViewHelper', array ('Description', array ('tag' => 'span', 'escape' => false, 'style' => 'display:none' ) ), array (array ('td' => 'HtmlTag' ), array ('tag' => 'td' ) ) );
$message->setDecorators ( $decoratorMessage ) ;
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 16h09   #9
Membre du Club
 
Homme Brice
Ingénieur d'études en développements techniques
Inscription : novembre 2005
Messages : 190
Détails du profil
Informations personnelles :
Nom : Homme Brice
Âge : 40
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en développements techniques
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2005
Messages : 190
Points : 55
Points : 55
Envoyer un message via MSN à bpdelavega
Merci pour ta réponse, donc je dois créer un fichier "Description.php" dans mon répertoire des décorateurs ?
bpdelavega est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 16h14   #10
Membre régulier
 
Inscription : février 2011
Messages : 114
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 114
Points : 77
Points : 77
C'est une proposition, étant donné que tu as fais de même pour l'affichage des labels et des erreurs.
Néanmoins, moi je n'ai pas encore eu à développer de décorateurs personnalisés, j'utilise la deuxième proposition que je t'ai faite auparavant.
flilou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2011, 20h21   #11
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Il n'y a pas besoin de décorateur setDecorator('Entrer la description') suffit, je viens de tester sur plusieurs projets sans décorateurs, après c'est à toi de voir avec le css pour voir où le mettre.
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2011, 17h07   #12
Membre du Club
 
Homme Brice
Ingénieur d'études en développements techniques
Inscription : novembre 2005
Messages : 190
Détails du profil
Informations personnelles :
Nom : Homme Brice
Âge : 40
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en développements techniques
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2005
Messages : 190
Points : 55
Points : 55
Envoyer un message via MSN à bpdelavega
Par défaut Désolé pour le retard

Bonjour,
Désolé pour cette réponse tardive. Merci à tous pour vos réponses, je n'ai pas vraiment de solution pour l'instant, tant pis je vais laisser tomber pour l'instant.
bpdelavega est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h08.


 
 
 
 
Partenaires

Hébergement Web