Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 24-03-2010 12:04:34

CinePhil
Membre
Date d'inscription: 24-03-2010
Messages: 19

[Résolu] Afficher séparément la zone de saisie

Bonjour,
Je m'initie au Zend Framework à partir du tutoriel trouvé sur Developpez.com "[url=http://g-rossolini.developpez.com/tutoriels/php/zend-framework/debuter/}Débuter avec le Zend Framework, approche MVC[/url]".

J'ai adapté l'appli et j'ai pour le moment le formulaire suivant :

Code:

<dt>
  <label for="date_emission" class="required">Date d'&eacute;mission (JJ/MM/AAAA):</label>
</dt>
<dd>
  <input type="text" name="date_emission" id="date_emission" value="24/03/2010" size="8">
</dd>
<dt>
  <label for="sel_redacteur" class="optional">R&eacute;dacteur de la fiche :</label>
</dt>
<dd>
  <select name="sel_redacteur" id="sel_redacteur">
      <option value="0" label=""></option>
      <option value="1" label="NOM1 Prénom1">NOM1 Prénom1</option>
      <option value="2" label="NOM2 Prénom2">NOM2 Prénom2</option>
      <option value="3" label="NOM3 Prénom3">NOM3 Prénom3</option>
  </select>
</dd>
<dt>
  <label for="redacteur" class="optional">R&eacute;dacteur (si pas dans liste) :</label>
</dt>
<dd>
  <input type="text" name="redacteur" id="redacteur" value="">
</dd>

Ce que je voudrais, c'est garder le dernier label "Rédacteur (si pas dans liste)", que je peux taper dans le code de la vue en HTML,  et séparer la zone de texte en deux (nom et prénom) avec leurs labels mais sur la mème ligne que le le label "Rédacteur (si pas dans liste)".
Un truc dans le genre :

Rédacteur (si pas dans liste) :          Nom : __________     Prénom :____________

Si j'ajoute simplement les deux zones de texte, elles s'afficheront sous le label "Rédacteur (si pas dans liste)" comme les autres champs.

J'ai essayé diverses choses, joué avec le CSS mais je cale.

Notamment, et pour un autre besoin sur le même formulaire, je ne trouve pas comment afficher seulement la zone de texte.
J'ai découvert qu'on peut afficher séparément la description, ou le label mais la zone de texte je n'y arrive pas.

Code:

<?php echo $this->form->description->getLabel() ;?>
<?php echo $this->form->description->getDescription() ;?>
<?php echo $this->form->description->/*quelle propriété pour la zone de saisie ?*/ ;?>

Dernière modification par CinePhil (08-04-2010 18:09:53)

Hors ligne

 

#2 26-03-2010 10:43:16

giggz
Nouveau membre
Date d'inscription: 12-03-2010
Messages: 3

Re: [Résolu] Afficher séparément la zone de saisie

Hello,

j'en profite pour UP ton topic car ça m'intéresse également.

Hors ligne

 

#3 26-03-2010 11:00:15

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

Re: [Résolu] Afficher séparément la zone de saisie

C'est une question à la fois de décorateur et CSS.

Voici une technique (y'en a surement d'autre, mais c'est celle qui me vient à l'esprit immédiatement)

Le but est donc de supprimé les tags </dd><dd> qui sont entre tes elements qui tu veux mettre sur une même ligne.
Pour ca, il faut avec le décorateur htmlTag, utilisé les attributs openOnly pour le premier élément et closeOnly pour le dernier élements.
Ainsi, pour l'élément 1 :

Code:

array(
   'ViewHelper',
   'Label',
   array('HtmlTag', array('tag' => 'dd', 'openOnly' => true, 'class' => 'uneclassaucasou')));

Pour l'élément 2:

Code:

array(
   'ViewHelper',
   array('HtmlTag', array('tag' => 'dd', 'closeOnly' => true)));

Ainsi, tu auras qqchose du genre :

Code:

<dd class="uneclassaucasou">
<label>
<input ...>
<input ...>
</dd>

Je te laisse  faire un peu de CSS si nécessaire


----
Gruiiik !

Hors ligne

 

#4 26-03-2010 11:58:11

CinePhil
Membre
Date d'inscription: 24-03-2010
Messages: 19

Re: [Résolu] Afficher séparément la zone de saisie

Je me suis débrouillé autrement.
D'abord j'ai supprimé les paramètres de décoration et j'ai appliqué ces nouveaux décorateurs vides aux champs à aligné sur la même ligne :

Code:

$elementDecorators = array(array('ViewHelper'),
                                    array('Errors'),
                                    array('Label')
                            );
                            
        $nom_emetteur = new Zend_Form_Element_Text('nom_emetteur', array('size' => 15));
        $nom_emetteur    ->setLabel('Nom :')
                        ->addFilter('StripTags')
                        ->addFilter('StringTrim')
                        ->setDecorators($elementDecorators);
        
        $prenom_emetteur = new Zend_Form_Element_Text('prenom_emetteur', array('size' => 15));
        $prenom_emetteur->setLabel('Prénom :')
                        ->addFilter('StripTags')
                        ->addFilter('StringTrim')
                        ->setDecorators($elementDecorators);

Ensuite dans la vue, j'ai trouvé comment afficher séparément tout ça et j'ai joué avec des <span> et du CSS :

Code:

<form method="<?php echo $this->form->getMethod() ?>" action="<?php echo $this->form->getAction()?>">
    <?php echo $this->form->date_emission ;?>
    <?php echo $this->form->sel_emetteur ;?>
    <?php echo $this->form->sel_service ;?>
    <dt>
        <span class="multi_label">Émetteur (si pas dans liste) :</span> 
        <span class="label_seul"><?php echo $this->form->nom_emetteur->renderLabel() ;?></span>
        <span class="label_seul"><?php echo $this->form->prenom_emetteur->renderLabel() ;?></span>
        <span class="label_seul"><?php echo $this->form->service->renderLabel() ;?></span>
    </dt><br />
        <span class="multi_label">&nbsp;</span>
    <dd>
        <span class="champ_seul"><?php echo $this->form->nom_emetteur->renderViewHelper() ;?></span>
        &nbsp;
        <span class="champ_seul"><?php echo $this->form->prenom_emetteur->renderViewHelper() ;?></span>
        <span class="champ_seul"><?php echo $this->form->service->renderViewHelper() ;?></span>
    </dd><br />
    <?php echo $this->form->titre ;?>
    <?php echo $this->form->description ;?>
    <?php echo $this->form->services_pouvant_repondre ;?>
    <?php echo $this->form->solution ;?>
    <?php echo $this->form->submit ;?>
</form>

Code:

.multi_label
{
    width: 300px;
    float: left;
}

.label_seul
{
    font-style: italic;
    font-size: 80%;
    vertical-align: text-bottom;
    float: left;
    width: 150px;
}

.champ_seul
{
    float: left;
    width: 150px;
}

A l'occasion je regarderai cette histoire de openOnly et closeOnly. Je me bats avec autre chose maintenant (le binding des paramètres dans les requêtes).

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