Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 27-12-2008 17:14:49

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

[1.7.1][Zend_Form]Une image, tout simplement

Bonjour,

j'aimerais pouvoir insérer directement dans mon formulaire une image, mais que celle-ci ne soit pas considérée comme un bouton.

Si j'essaie un truc du style :

Code:

protected $_standardElementDecorator = array(
        'ViewHelper',
        array('Description', array('class' => 'formHint')),
        array('Label', array('escape' => false)),
        array('Errors', array('placement' => 'append')),
        array('HtmlTag', array('tag' => 'span', 'class' => 'Style1'))
     );
$flogin_separateur = new Zend_Form_Element_Image('separateur');
        $flogin_separateur->setImage('/1001sportifsv2/public/images/graph/separateur-rouge.gif')
                          ->setAttrib('border',0)
                            ->setDecorators($this->_standardElementDecorator);

Il me rend l'image cliquable, ce qui dans le cas présent n'est pas l'effet recherché.

J'imagine que c'est réalisable, mais aprés pas mal d'essais, je ne vois toujours pas...

Hors ligne

 

#2 29-12-2008 10:38:11

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: [1.7.1][Zend_Form]Une image, tout simplement

Le composant Zend_Form_Element_Image  correspond à un bouton de validation de formulaire de type image.

Essaye de lui passer le paramètre disabled au pire ?
Ou crée un composant smile


Société : Direct Info Service

Hors ligne

 

#3 29-12-2008 22:26:14

keilnoth
Membre
Date d'inscription: 30-08-2008
Messages: 128
Site web

Re: [1.7.1][Zend_Form]Une image, tout simplement

Une image dans un formulaire, c'est de la mise en page. Donc à mon avis, tu n'as pas à ajouter ton image dans ton formulaire en tant qu'élément mais dans l'affichage de ton formulaire.

Si tu ajoutes ton image en tant qu'élément alors on peut s'attendre à un check de validité, une tentative de remplissage par la méthode populate(), etc... Ce qu'on ne désire pas forcément.

Pour ce faire, si la mise en page est "complexe", je te conseille de travailler directement avec le view renderer de ton formulaire.

Si tu comprends l'anglais, jète un oeil là dessus :
http://devzone.zend.com/article/3450-De … -Zend_Form

En gros, le bout de code qui va bien, c'est ça :

Code:

$form->setDecorators(array(
    array('ViewScript', array('script' => 'customForm.phtml'))
));

L'autre solution, c'est de créer un élément bien à toi en surchargeant Zend_Form_Element et d'utiliser un décorateur et un helper de vue, à nouveau bien à toi, pour l'afficher.

Encore une solution, tu peux redéfinir le décorateur de vue et le helper de vue de ton bouton image uniquement pour ton élément particulier et spécifiant ton propre helper.

Hop, encore un petit lien :
http://framework.zend.com/manual/fr/zen … decorators

J'espère que ça t'aideras.


Quelques tutoriaux Zend Framework !

Hors ligne

 

#4 30-12-2008 10:30:19

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: [1.7.1][Zend_Form]Une image, tout simplement

Merci beaucoup pour vos réponses.

Keilnoth, ta réponse est vraiment complète, c'est super.
Je suis complètement de ton avis, la mise en page et surtout les éléments graphiques ne devraient pas se trouver là.
Pour être claire le formulaire, comme tu le dis de façon fort diplomatique, est complexe, ou plutôt, merdique.
Juste à titre d'information, voici la gueule de la bavure, ce qui va faire hurler à plus d'un titre pas mal de monde (je précise quand même que je ne suis pas l'auteur de la chose) :

Code:

<table width="900" height="35" border="0" align="center" cellspacing="0">
<form action="/index/connexion" method="post">  
  <tr>
    <td width="54">

   <span class="Style1">Identifiant</span></td>
    <td width="66"><input name="identifiant" type="text" size="8"></td>
    <td width="74"><span class="Style1">&nbsp;Mot de passe</span></td>
    <td width="79"><input name="motdepasse" type="password" size="8"></td>
    <td width="215" valign="top">
        <input type="image" src="/public/images/graph/go1.gif" width="26" height="19" name="submit" alt="connexion"/>
        <img src="/public/images/graph/separateur-rouge.gif" border="0">
        <a href="/index/enreg"> <img alt="enregistrement" src="/public/images/graph/enregistrer.gif" border="0"> </a>

    </td>
    <td width="86" align="center"><a href="/index/index" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image9','','/public/images/graph/accueil3.gif',1)"><img src="/public/images/graph/accueil1.gif" name="Image9" width="86" height="27" border="0"></a></td>
  </tr>
    </form>  
</table>

Comme tu peux le voir, on a un formulaire avec une table, c'est pas terrible.
Mais surtout il y a les balises <form> et </form> entre la balise <table></table> et <tr></tr> !! Avec IE6 ou IE7 si on met la balise <form> ailleurs, alors on génère à l'affichage une ligne vide... Pas avec FireFox

C'est clair, il faudrait tout refaire, mais la maquette complète est super lourde et truffée (c'est la saison) de bidules de ce genre et ce n'est pas mon job de refaire ça...
Voilà...
En tout cas merci encore.

Dernière modification par Jean-Marc Rigade (30-12-2008 10:31:08)

Hors ligne

 

#5 31-12-2008 00:10:22

keilnoth
Membre
Date d'inscription: 30-08-2008
Messages: 128
Site web

Re: [1.7.1][Zend_Form]Une image, tout simplement

Ah ouai, moche... tongue

Pour éviter la ligne vide dans ton form tu peux lui ajouter les styles :

Code:

display:inline;
padding:0;
margin:0;

T'embêtes pas avec l'affichage standard de Zend_Form dans ces cas là. Tu peux simplement spécifier le ViewScript et ensuite, pour chaque champs, utiliser un truc du genre :

Code:

$this->element->tonChamp->getDecorator('HtmlTag')->render()

Mais je suis plus très sûr de la ligne exact. J'ai pas le code sous les yeux en ce moment. Ca permet de n'afficher que le décorateur qui affiche le champ du formulaire et pas de wrapper DtDd ou le label.


Quelques tutoriaux Zend Framework !

Hors ligne

 

#6 31-12-2008 09:25:58

Jean-Marc Rigade
Membre
Lieu: Rennes
Date d'inscription: 25-09-2007
Messages: 314

Re: [1.7.1][Zend_Form]Une image, tout simplement

Ben oui c'est pas terrible...
Le truc le plus nul c'est cette balise <form> entre <table> et <tr> qui dés quelle est mise ailleurs fout le bordel.
C'est toute la maquette qu'il faudrait revoir...

Je suis allé voir ton site, sympa, clair et bien foutu.

Hors ligne

 

#7 31-12-2008 17:12:49

keilnoth
Membre
Date d'inscription: 30-08-2008
Messages: 128
Site web

Re: [1.7.1][Zend_Form]Une image, tout simplement

Merci smile


Quelques tutoriaux Zend Framework !

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