Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 31-03-2008 15:29:15

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

[Zend_Form] Aligner 2 elements mais pas le reste

Bonjour !

J'ai encore un soucis sur la mise en page de mes elements.
Je veux permettre de choisir une heure dans un formulaire.
Celle-ci est décomposé en 2, les heurs, et les minutes. Ce sont des select.
Comment faire pour les alignés ?
Car, si je les configures comment tous mes autres elements, mes décorateurs vont les séparés et donc ca sera l'un en dessous de l'autre.
Comment faire ?

Merci

Dernière modification par nORKy (31-03-2008 15:30:17)


----
Gruiiik !

Hors ligne

 

#2 31-03-2008 16:15:42

Badoux
Membre
Date d'inscription: 25-03-2008
Messages: 32

Re: [Zend_Form] Aligner 2 elements mais pas le reste

Utilise l'attribue "class" ou "id" pour identifier tes balises (de ton decorateur) et les propiétés "float" et "clear" de CSS pour l'alignement !
Une mise en page, peut-être intégralement géré, depuis un CSS. Du moment bien sûr que la structure de ton form, soit construite autour de DIV !

Pour aligner (faire suivre) plusieurs DIV successivement utilise:

Code:

float: left

Pour retourner la div suivante, utilise

Code:

clear: both

Voila

Hors ligne

 

#3 31-03-2008 16:33:13

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

Re: [Zend_Form] Aligner 2 elements mais pas le reste

Ce n'est pas un problème de CSS.
Mais de Zend_Form et de ses décorateurs.

Exemple, voici le code classique (j'ai abrégé)

Code:

        [...]
     
        $start_hour = new Zend_Form_Element_Select('start_hour');
        $start_hour->setLabel('Début de plage horaire:');
        $start_hour->setRequired(true);
        $start_hour->addMultiOptions(range(0, 23))

        $start_min = new Zend_Form_Element_Select('start_min');
        $start_min->addMultiOptions(range(0, 59))

        $this->addElements(array(
            $comment,
            $start_date,
            $start_hour,
            $start_min,
            $end_time,
            $end_date,
            $submit
        ));
        $this->setDecorators(array(
            'FormElements',
            'Form'
        ));
        $this->setElementDecorators(array(
            array('ViewHelper'),
            array('Label', array('tag' => null, 'separator'=>' ')),
            array('HtmlTag', array('tag' => 'p')),
        ));
        $submit->removeDecorator('Label');

Sachant biensur que j'ai d'autre elements autour de ceux-ci.

Actuellement ca donne ca :

Code:

<p><label for="start_hour" tag="" class="required">Début de plage:</label> 
<select name="start_hour" id="start_hour">
    <option value="0" label="0">0</option>
    [...]
</select></p>
<p>
<select name="start_min" id="start_min">
    <option value="0" label="0">0</option>
    [...]
</select></p>

Moi, je voudrais que ces 2 elements soit 'ensemble' :

Code:

<p><label for="start_hour" tag="" class="required">Début de plage:</label> 
<select name="start_hour" id="start_hour">
    <option value="0" label="0">0</option>
    [...]
</select>
<select name="start_min" id="start_min">
    <option value="0" label="0">0</option>
    [...]
</select></p>

J'ai bien essayé avec addDisplayGroup, mais... ca par en vrille smile

Dernière modification par nORKy (31-03-2008 16:33:57)


----
Gruiiik !

Hors ligne

 

#4 31-03-2008 17:07:02

Badoux
Membre
Date d'inscription: 25-03-2008
Messages: 32

Re: [Zend_Form] Aligner 2 elements mais pas le reste

Pourquoi n'utilises-tu pas ton propre Decorateur ? En gros, tu structure ton Form à ta sauce !

Hors ligne

 

#5 01-04-2008 09:29:37

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

Re: [Zend_Form] Aligner 2 elements mais pas le reste

Pourquoi pas.. je vais essayé


----
Gruiiik !

Hors ligne

 

#6 01-04-2008 17:22:18

-=blu3+3y3s=-
Membre
Lieu: Toulouse
Date d'inscription: 01-04-2008
Messages: 47

Re: [Zend_Form] Aligner 2 elements mais pas le reste

Salut, je pense que tu devrais faire un tour du côté du DisplayGroup avec lequel tu devrais pouvoir faire ce que tu veux.

Hors ligne

 

#7 02-04-2008 00:31:48

soulsauveur
Nouveau membre
Date d'inscription: 09-05-2007
Messages: 9

Re: [Zend_Form] Aligner 2 elements mais pas le reste

Salut,

Alors après plein d'essais, j'ai réussi à obtenir quelque chose de cohérent en utilisant  les "subForm". En gros j'ai le même problème que toi je voudrais afficher une suite de champs "Select" pour que mes membres puissent enregistrer leur date de naissance, et bien sur comme c'est souvent le cas on a un champs pour le jour, le mois et l'année. Donc apres pas mal de recherche j'ai utilisé un "Subform" sans déclarer son décorateur "Form" ce qui m'a permis d'obtenir ce que je voulais en suite je l'ai intégré dans mon formulaire. Je ne sais pas si c'est la bonne solution, si quelqu'un a une meilleur solution car je tâtonne pour l'instant.

Hors ligne

 

#8 02-04-2008 15:32:27

-=blu3+3y3s=-
Membre
Lieu: Toulouse
Date d'inscription: 01-04-2008
Messages: 47

Re: [Zend_Form] Aligner 2 elements mais pas le reste

Salut,

Après plusieurs essais, voici la solution en passant par les "DisplayGroup". Ca me semble plus logique de passer par le "DisplayGroup" que par les "subForm".

Voici un petit code (Enfin, petit est un grand mot smile) qui permet d'aligner dans une balise p plusieurs input de type submit.

Code:

        //initialisation d'un objet Form
            $form = new Zend_Form();
            
        //mise en forme du form
            $form                
                ->setAction('')
                ->setMethod('post')
                ->setDecorators(
                    array(
                        'Errors',
                        'FormElements',
                        'Form'
                    )
                );
            
        //Ajout et mise en forme des éléments
            
            $form
                ->addElement(
                    //type de l'élément
                    'submit',
                    //Nom de l'élément
                    'Cancel',
                    //options de l'élément
                    array(
                        'label'=>'Annuler',
                        'decorators'=>array('ViewHelper'),                        
                    )
                )

                ->addElement(
                    'submit',
                    'Previous',
                    array(
                        'label'=>'<< Precedent',
                        'decorators'=>array('ViewHelper'),                        
                    )                
                )

                ->addElement(
                    'submit',
                    'Next',
                    array(
                        'label'=>'Suivant >>',
                        'decorators'=>array('ViewHelper'),                        
                    )                
                )

                ->addElement(
                    'submit',
                    'Finish',
                    array(
                        'label'=>'Terminer',
                        'decorators'=>array('ViewHelper'),                        
                    )                
                );
            
            //Création des groupes 
            $form
                ->addDisplayGroup(
                    //Elements à grouper
                    array(
                        'Previous',
                        'Next',
                        'Finish'
                    ),
                    //Nom du groupe
                    'actions'
                ) 
                ->addDisplayGroup(
                    //Elements à grouper
                    array(
                        'Cancel'
                    ),
                    //Nom du groupe
                    'annuler'
                );
                
            //Mise en forme du groupe 'annuler'
            $form
                //appel du groupe 'annuler'
                ->annuler
                ->setDecorators(
                    array(
                        'FormElements',
                        array(
                            'HtmlTag',
                            array(
                                'tag'=>'p',
                                'class'=>'Button_Annuler',
                                'style'=>'padding:5px;float:left;background-color:blue;clear:left'
                            )
                        )
                    )
                );

            //Mise en forme du groupe 'actions'
            $form
                ->actions
                ->setDecorators(
                    array(
                        'FormElements',
                        array(
                            'HtmlTag',
                            array(
                                'tag'=>'p',
                                'class'=>'Buttons_Actions',
                                'style'=>'padding:5px 5px 5px 50px;float:left;background-color:red;clear:right;'
                            )
                        )
                    )
                );
                
            //Placement du groupe 'actions'
            $form->annuler->setOrder(0);
            
            //Placement du groupe 'annuler'
            $form->actions->setOrder(1);

ce qui te donnera comme code ceci :

Code:

<form enctype="application/x-www-form-urlencoded" action="" method="post">
    <p class="Button_Annuler" style="padding:5px;float:left;background-color:blue;clear:left">
        <input type="submit" name="Cancel" id="Cancel" value="Annuler" />
    </p>
    <p class="Buttons_Actions" style="padding:5px 5px 5px 50px;float:left;background-color:red;clear:right;">
        <input type="submit" name="Previous" id="Previous" value="&lt;&lt; Precedent" />
        <input type="submit" name="Next" id="Next" value="Suivant &gt;&gt;" />
        <input type="submit" name="Finish" id="Finish" value="Terminer" />
    </p>
</form>

Voilà, je pense que tu arriveras à te débrouiller avec ce bout de code.

Hors ligne

 

#9 03-04-2008 14:27:21

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

Re: [Zend_Form] Aligner 2 elements mais pas le reste

Ok, j'ai compris, j'ai bien essayé avec displaygroup, mais j'avais pas réussit.
Je devrais y arrivé avec ca !
Merci


----
Gruiiik !

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