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 :

Pourquoi <dt> et <dd>?


Sujet :

Zend_Form PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 623
    Par défaut Pourquoi <dt> et <dd>?
    Bonjour à tous,

    est-ce que c'est correct au niveau de la sémantique de mettre les labels et inputs dans des <dt> et <dd> comme le fait ZF?

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <dt id="email-label"><label for="email" class="required">Email :</label></dt>
    <dd id="email-element">
    <input type="text" name="email" id="email" value=""></dd>

    J'ai un autre problème. Je veux définir l'action qui sera chargée de traiter les données envoyées. Dans ma classe form, je fais :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php $this->setAction('/index/traitement/')->setMethod('post'); ?>

    Mais ça ne change rien, l'action du formulaire est toujours l'action dans laquel le formulaire est crée.
    Où me suis-je trompé?

    Merci par avance.

  2. #2
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Salut Farid,
    Pour les dt et dd, j'avais eu le même problème au boulot, apparement c'est un décorateur par défaut de Zend (notre graphiste s'était arraché les cheveux car ca faisait planter son CSS), pour les enlever, ajoute ceci dans l'init de ton modèle de formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function init()
    {
        $this->setDisableLoadDefaultDecorators(true);
    }

    Pour ce qui est de l'action du formulaire, tu doit la spécifier à l'appel du modèle dans ton controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $form = new Forms_Clients(array(
        'action' => BASE_URL . '/clients/add',
        'method' => 'post',
    ));

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 623
    Par défaut
    Salut amoiraud.

    j'ai essayé :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php $this->setDisableLoadDefaultDecorators(true); ?>

    Et bien j'obtiens un page blanche, sans erreur.

    Pour :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php $form = new Forms_Clients(array(
        'action' => BASE_URL . '/clients/add',
        'method' => 'post',
    ));?>

    je n'arrive toujours pas a modifier cette action. J'arrive a mettre "get" à la place de poste mais rien n'a faire pour l'action, ça ne bouge pas. J'ai essayer de remplacer BASE_URL par APPLICATION_PATH car BASE_URL me lançait une erreur, mais rien.

    Aprés avoir trouvé aucun tutoriel complet sur les Modèles avec plusieurs tables de ZF, voilà que je galère sur les formulaires. Je crois que ZF est pas pour moi .

  4. #4
    Membre émérite
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Par défaut
    Salut,
    pour le premier souci tu peut nous montrer le code de ton modèle de formulaire ?
    Car j'utilise souvent la fonction setDisableLoadDefaultDecorators() et elle marche sur mes projets.

    Pour l'action, le BASE_URL est une constante que j'ai défini dans le index.php du dossier public :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    define('BASE_URL', 'http://' . $_SERVER['SERVER_NAME']);
    Le APPLICATION_PATH ne marchera pas car le lien doit être absolu et tu ne doit pas lui passer le lien du dossier application mais celui du public.
    Au pire essaye dans un premier temps de mettre le lien a la main sans te préoccuper des constantes : http://www.url.com/controller/action

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 623
    Par défaut
    Bon enfaite je suis un boulet.

    En voulant poster mon code sur le forum, je me suis aperçus que le code de m'a vu c'est ça :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
     
    $this->form->setAction($this->url());
    echo $this->form;
     
    ?>


    Je sais pas où j'ai trouvé ce code, du coup le changement de l'attribut action marche.

    Par contre, j'ai toujours ce problème de <dt> <dd>.

    Voilà mon formulaire :

    Code php : 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
     
    <?php
     
    class Application_Form_Auteurs extends Zend_Form
    {
     
        public function init()
        {
     
    		//Ne marche pas
    		$this->setDisableLoadDefaultDecorators(true);
     
    		$this->setAction('http://localhost/zf_test/public/index/traitement');
     
     
    		$this->addElement('text', 'nom', array(
    					'label'	=> 'Nom :',
    					'required'	=> 'true',
    					));
     
    		$this->addElement('text', 'email', array(
    					'label'	=> 'Email :',
    					'required'	=> 'true',
    					));
     
     
    		// Un captcha
            $this->addElement('captcha', 'captcha', array(
                'label'      => 'Please enter the 5 letters displayed below:',
                'required'   => true,
                'captcha'    => array(
                    'captcha' => 'Figlet',
                    'wordLen' => 5,
                    'timeout' => 300
                )
            ));
     
     
            $this->addElement('submit', 'submit', array(
                'ignore'   => true,
                'label'    => 'Envoie',
            ));	
     
        }
     
    }?>

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 22
    Par défaut Solution eventuelle
    Bonsoir,
    J'ai le même problème que toi en ce qui concerne les dd/dt. Après recherche je suis tombé sur ce tuto: http://wiip.fr/content/zend-form-con...s-dt-et-les-dd et celui-ci http://zendgeek.blogspot.com/2009/07...ecorators.html. En adaptant un peu le code à ce que j'avais fait initialement j'ai réussi à obtenir le code html suivant pour mon formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <form id="projet" enctype="application/x-www-form-urlencoded" action="" method="post"><table>
     
    <tr><th id="intitule-label"><label for="intitule" class="required">Intitule</label></th>
    <td>
    <input type="text" name="intitule" id="intitule" value="" /></td></tr>
    <tr><th id="lien-label"><label for="lien" class="optional">Lien</label></th>
     
    <td>
    <input type="text" name="lien" id="lien" value="" /></td></tr>
    <tr><th id="description-label"><label for="description" class="required">Description</label></th>
    <td>
    <input type="text" name="description" id="description" value="" /></td></tr>
    <tr><td colspan="2">
    <input type="submit" name="envoyer" id="boutonenvoyer" value="Proposer" /></td></tr></table></form>
    Avec la méthode init() suivante pour mon formulaire:
    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
     
    public function init()
        {
            $this->setName('projet');
     
     
            $decorators = array(
    		    'ViewHelper',
    		    'Errors',
    		    array('Description', array('tag' => 'p', 'class' => 'description')),
    		    array('HtmlTag', array('tag' => 'td')),
    		    array('Label', array('tag' => 'th')),
    		    array(array('tr' => 'HtmlTag'), array('tag' => 'tr'))
    		);
     
            $id = new Zend_Form_Element_Hidden('id');
            $id->setDecorators(array());
            $id->addFilter('Int');
     
            $intitule = new Zend_Form_Element_Text('intitule');
            $intitule->setLabel('Intitule')
                    ->setRequired(true)
                    ->addFilter('StripTags')
                    ->addFilter('StringTrim')
                    ->addValidator('NotEmpty')
                    ->setDecorators(array('label'))
                    ->setDecorators($decorators);
     
            $lien = new Zend_Form_Element_Text('lien');
            $lien->setLabel('Lien')
            	->setRequired(false)
            	->addFilter('StripTags')
            	->addFilter('StringTrim')
            	->addValidator('NotEmpty')
            	->setDecorators($decorators);
     
            $description = new Zend_Form_Element_Text('description');
            $description->setLabel('Description')
                  ->setRequired(true)
                  ->addFilter('StripTags')
                  ->addFilter('StringTrim')
                  ->addValidator('NotEmpty')
                  ->setDecorators($decorators);
     
            $envoyer = new Zend_Form_Element_Submit('envoyer');
            $envoyer->setAttrib('id', 'boutonenvoyer');
            $envoyer->setLabel('Proposer');
            $envoyer->setDecorators(array('ViewHelper',array(array('td' => 'HtmlTag'), array('tag' => 'td', 'colspan' => 2)),array(array('tr' => 'HtmlTag'), array('tag' => 'tr'))));
     
            $this->addElements(array($id, $intitule, $lien, $description, $envoyer));
     
            $this->setDecorators(
    		    array(
    		        'FormElements',
    		        array('HtmlTag', array('tag' => 'table')),
    		        'Form'
    		    )
    		);
     
        }
    Voila !
    En éspèrant t'avoir été utile , sinon tant pis.

    Bonne soirée et bon développement.

    Ben

    PS: Pour moi aussi $this->setDisableLoadDefaultDecorators(true); donne une page blanche.

Discussions similaires

  1. [Templates] Quel système utilisez-vous ? Pourquoi ?
    Par narmataru dans le forum Bibliothèques et frameworks
    Réponses: 270
    Dernier message: 26/03/2011, 00h15
  2. Que choisir ? C# , VB.NET, C++, Delphi ? pourquoi ?
    Par Louis-Guillaume Morand dans le forum Général Dotnet
    Réponses: 475
    Dernier message: 08/04/2010, 19h27
  3. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 14h43
  4. Pourquoi ces directives #ifndef ... en haut des .h
    Par Patrick PETIT dans le forum C
    Réponses: 8
    Dernier message: 06/03/2003, 23h53

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