Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 30-06-2008 10:32:51

Jocio
Membre
Lieu: Marseille
Date d'inscription: 06-07-2007
Messages: 42

[Zend_Form] Redéfinir un Element ?

Bonjour,

J'ai un petit problème dans mon formulaire. Le "render" de l'élément Radio ne me plait pas.
Mon css agit sur les "labels" et donc ça fou le bordel dans l'affichage ...

Voici ce que j'obtient :

Code:

<dt><label for="active" class="required">Active</label></dt>
<dd>
<label style="white-space: nowrap;"><input type="radio" name="active" value="0">no</label>
<br />
<label style="white-space: nowrap;"><input type="radio" name="active" value="1" checked="checked">yes</label>
</dd>

je voudrait avoir ça :

Code:

<dt><label for="active" class="required">Active</label></dt>    
<dd>
<input type="radio" name="active" value="0">no
<input type="radio" name="active" value="1" checked="checked">yes
</dd>

J'ai d'abord pensé à redefinir l'élément Radio et l'utiliser à la creation du formulaire, mais j'ai vite vu qu'il fallait redefinir une vue et je ne sais pas comment faire ...
J'ai essayé de rajouter un dossier pour les Helper dans la fonction init :

Code:

    require_once 'Zend/Form/Element/Xhtml.php';

    class Element_Radio extends Zend_Form_Element_Radio {
    /**
     * Use formRadio view helper by default
     * @var string
     */
        public $helper = 'formRadio';
        // public $helper = 'formRadioPerso';
    
        
        public function init () {
            $baseUrl = Zend_Registry::get('baseurl');
            
            // Ajoute [baseurl du site]/library/Element/Helper avec le préfixe de classe 'Element_Helper'
            $view = new Zend_View();
            $view->addHelperPath($baseUrl.'/library/Element/Helper', 'Element_Helper');
        }
    }

Si je decommente "public $helper = 'formRadioPerso';" et que je commente "public $helper = 'formRadio';" j'ai droit à ce message d'erreur :

Code:

Warning: helper 'FormRadioPerso' not found in path in D:\wamp\www\site\web\library\Zend\Form.php on line 2223

// J'ai le fichier FormRadio.php dans le dossier [baseurl du site]/library/Element/Helper
// "class Element_Helper_FormRadioPerso extends Zend_View_Helper_FormElement { ... }"
// il y a la seule methode de la classe : "formRadioPerso"
// la méthode réalise le code que j'ai mit au dessus que je veux obtenir ...

Quelqu'un peut m'aider ? je comprend pas très bien comment tout ça marche ... :s
Au cas où, une partie de mon css ( celle qui est en rapport avec les radios et les labels ) :

Code:

/* Label */
label {
    background-color: #FFCC66;
    /*background-color: #dab082;*/
    /*background-color: #87CEFA;*/
    display: block;
    width: 39%;
    float: left;
    padding-right: 1%;
    text-align: right;
    letter-spacing: 1px;
}

label:hover {
    font-weight: bold;
}

/* Input */
input {
    margin-left: 1%;
    width: 58%;
    border: #CCC 1px solid;
}

/* button radio */
input[type="radio"] {
    border: #DDEEFF 1px solid;
    width: 10px;
    background-color: #87CEFA;
}

screenshot :
http://nsa02.casimages.com/img/2008/06/30/0806301032173873257.png


Pouf c'est tout !

Hors ligne

 

#2 30-06-2008 12:06:55

fte
Membre
Lieu: 06 13 83
Date d'inscription: 16-05-2008
Messages: 112
Site web

Re: [Zend_Form] Redéfinir un Element ?

Une piste possible : le DisplayGroup
exemple :

Code:

       // on regroupe les boutons
        $this->addDisplayGroup( //Elements à grouper
                    array('inverseurGauche', 'inverseurDroite'), 'boutons' );    //Nom du groupe
    // et on entoure d'un tag
        $this->boutons->addDecorator( 'HtmlTag', array('tag' => 'div', 'class' => 'boutons') );
        }

ca crache :

Code:

<div class="boutons">
<dt></dt><dd>
<button name="invGauche" id="invGauche" type="button" value="Inv. séléct. gauche" class="invert">bouton 1</button></dd>
<dt></dt><dd>
<button name="invDroite" id="invDroite" type="button" value="Inv. séléct. droite" class="invert">bouton 2</button></dd>
</div>

Autre piste : pour regrouper deux éléments dans un seul <dd> il reste les éléments composés :
http://codecaine.co.za/posts/compound-e … -zend-form

Hors ligne

 

#3 30-06-2008 12:48:27

Akis
Membre
Date d'inscription: 29-03-2008
Messages: 86
Site web

Re: [Zend_Form] Redéfinir un Element ?

Sinon tu modifies ta CSS...

Code:

dt label {
...

Je conseille d'utiliser ça temporairement quand même et de trouver une autre solution pour retirer les balises label qui ne te servent à rien wink

Hors ligne

 

#4 30-06-2008 13:23:07

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Zend_Form] Redéfinir un Element ?

J'ai d'abord pensé à redefinir l'élément Radio et l'utiliser à la creation du formulaire, mais j'ai vite vu qu'il fallait redefinir une vue et je ne sais pas comment faire ..

Pourquoi faut il redefinir une vue? Il m'est arrivé de surcharger un element, je n'ai pas eu besoin de faire ça.

Sinon pour tes histoires de input, il faut d'un point de vue de la grammaire HTML laisser un label pour chaque input (ex: accessibilité & co...), et non un label pour plusieurs label.

Utilises les CSS, ça sera de loin le plus rapide et le plus propre smile

Hors ligne

 

#5 30-06-2008 16:28:26

Jocio
Membre
Lieu: Marseille
Date d'inscription: 06-07-2007
Messages: 42

Re: [Zend_Form] Redéfinir un Element ?

fte :
Si j'ai bien compris ce que tu m'as dit de faire ... ça ne marche que pour regrouper 2 éléments entre eux.
Or, moi j'ai 1 seul élément ( de type radio ) avec des "label" qui entourent les 2 inputs ( "yes" et "no" ) ...
Du coup, il récupèrent le css "label" pour eux alors qu'il devraient pas, c'est la merde.

Le lien que tu m'as donné ne dit rien à propos du rendus des éléments ... ou alors j'ai mal regardé

Akis :
si je met ce que tu me dis, tout les autres "label" perdent leur style :-s

Mr.MoOx :
Je voulais dire "redefinir une aide de vue ( un helper )" mais apparement, je fais complètement fause route :-/

J'ai pensé à carement redéfinir le "render" de mon formulaire, mais je trouve pas de tutoriel là dessus.
J'en aurais grandement besoin car je patauge dans la gadoue depuis pas mal de temps à cause de ça :-s


Pouf c'est tout !

Hors ligne

 

#6 30-06-2008 16:47:07

fte
Membre
Lieu: 06 13 83
Date d'inscription: 16-05-2008
Messages: 112
Site web

Re: [Zend_Form] Redéfinir un Element ?

Comme l'a dit Akis et Mr. Moox modifie le css pour mettre le joli background que sur un label d'un <dt> et pas d'un <dd>.

Hors ligne

 

#7 30-06-2008 19:00:35

Jocio
Membre
Lieu: Marseille
Date d'inscription: 06-07-2007
Messages: 42

Re: [Zend_Form] Redéfinir un Element ?

Ah ok, j'avais compris l'inverse.

Je testerai demain au boulot ;-)


Pouf c'est tout !

Hors ligne

 

#8 01-07-2008 09:18:20

Jocio
Membre
Lieu: Marseille
Date d'inscription: 06-07-2007
Messages: 42

Re: [Zend_Form] Redéfinir un Element ?

J'ai fait comme vous m'avez dit : j'ai "exclu" le label des radio des autre label.
J'ai aussi rajouté un :

Code:

input[type="radio"] {
    width: 27%;
    position: relative;
}

Donc le style me convient parfaitement à part leur positions :
http://nsa02.casimages.com/img/2008/07/01/0807010920573886769.png

J'aimerai bien qu'ils soit positionné l'un au dessus de l'autre ...
il doit bien y avoir une propriété CSS fourbe pour que ce soit possible :-p

Dernière modification par Jocio (01-07-2008 09:20:29)


Pouf c'est tout !

Hors ligne

 

#9 18-07-2008 11:33:30

Garra
Membre
Date d'inscription: 13-05-2008
Messages: 22

Re: [Zend_Form] Redéfinir un Element ?

Salut Jocio!!!
Est-ce que tu as reussi à gérer tes radios?

j'ai comme toi de soucis avec formRadio car Zend me place un <br /> entre les deux radio et ça me fout le b... dans mon HTML, il genère un décalage entre les deux comme toi.
Comment tu as fait?
merci de ton aide!!

Hors ligne

 

#10 18-07-2008 12:17:32

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: [Zend_Form] Redéfinir un Element ?

Faites une bête recherche de "<br />" dans les fichiers du dossier des helpers de vue (Zend/View/Helper) et vous comprendrez que vous pouvez enlever ce "BR".

Hors ligne

 

#11 18-07-2008 18:33:58

Jocio
Membre
Lieu: Marseille
Date d'inscription: 06-07-2007
Messages: 42

Re: [Zend_Form] Redéfinir un Element ?

Ben j'ai défini un décorateur exprès pour formRadio ou j'ai recopié presque mot pour mot le décorateur par défaut et j'ai viré le <br />

Après, j'ai galéré avec mon css ( mais ça c'est mon problème ) et du coup, je vais surement craquer pour mettre un sélect ou un truc du genre :-s

Puisque la discussion repars, quelqu'un sait pourquoi Zend a choisi de mettre en "<br />" ?
Les boutons radio sont souvent 2 l'un à côté de l'autre. C'est rare d'avoir de nombreux radio.


Pouf c'est tout !

Hors ligne

 

#12 26-06-2009 15:13:38

jrmarmelade
Nouveau membre
Date d'inscription: 05-06-2009
Messages: 2
Site web

Re: [Zend_Form] Redéfinir un Element ?

Bien que le topic ne soit plus actif depuis un bout de temps, j'ai trouvé une solution toute simple !

Code:

$mon_zend_form_radio_button->setSeparator(' ');

...et tes <br /> sautent comme par magie ! car ici, on applique le séparateur directement aux éléments du groupe smile

Hors ligne

 

#13 01-09-2010 15:16:54

DJPi
Membre
Date d'inscription: 12-04-2010
Messages: 12

Re: [Zend_Form] Redéfinir un Element ?

jrmarmelade a écrit:

Bien que le topic ne soit plus actif depuis un bout de temps, j'ai trouvé une solution toute simple !

Code:

$mon_zend_form_radio_button->setSeparator(' ');

...et tes <br /> sautent comme par magie ! car ici, on applique le séparateur directement aux éléments du groupe smile

Merci pour cette solution wink très pratique !

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