Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Zend_Form
Zend_Form Forum d'entraide pour le composant Zend_Form du Zend Framework (création de formulaires, helpers, AJAX etc.). Avant de poster -> FAQ Zend_Form.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/11/2010, 15h07   #1
Invité régulier
 
Inscription : mars 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 29
Points : 6
Points : 6
Par défaut Zend_Form insertion de code HTML apparait différemment sur IE

Bonjour,

Souhaitant personnaliser esthétiquement mon formulaire, j'ai voulu insérer du code HTML à l'intérieur ce qui n'est pas une mince à faire.
Pour ce faire j'ai utilisé le helper 'formNote' comme conseillé par diverses personnes sur le net :

Code :
1
2
3
4
5
6
7
8
 
 
//Dans \library\My\Form\Element\Html.php
class My_Form_Element_Html extends Zend_Form_Element_Xhtml
{
    // On utilise l'aide de vue formNote
	public $helper = 'formNote';
}
Ensuite j'ai un formulaire ou j'utilise ce helper pour ajouter du code html (ici un spacer par exemple après un label et un champs email )

Code :
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
 
// Dans application\forms\Login.php
class Form_Login extends Zend_Form
{
 
	public function __construct($options = null)
	{
		parent::__construct($options);
		$this->setName('login');
$spacer = new My_Form_Element_Html("spacer") ;
		$spacer->addDecorators(array(
    		'ViewHelper',
    	array('HtmlTag', array('tag' => 'div', 'class' => 'spacer')) 
		));
		$spacer->removeDecorator('label');
 
$email = new Zend_Form_Element_Text("emailLog",array('size' => 25));
		$email ->setLabel('E-mail *')
		->setRequired(false)
		->addFilter('StringTrim')
		->addFilter('StripTags')
		//->addValidator('NotEmpty', true , array('messages' => array('isEmpty' => 'Vide')))
		->addValidator('EmailAddress');
 
$this->addElements(array($email,$spacer));
       }
 
}
Code :
1
2
3
4
 
//Dans la vue     
$formLogin = new Form_Login();
$this->view->login = $formLogin;
Bon tout fonctionne correctement ; Voici le code qui est généré par par Mozilla Firefox (firebug) :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
<form id="login" enctype="application/x-www-form-urlencoded" action="" method="post">
<dl class="zend_form">
<input name="form" value="formLog" id="formLog" type="hidden">
<dt id="emailLog-label"><label for="emailLog" class="optional">E-mail *</label></dt>
<dd id="emailLog-element">
<input name="emailLog" id="emailLog" value="" size="25" type="text"></dd>
<div class="spacer">
</div>
 
</form>
Par contre quand je regarde le code via IE developper Toolbar j'ai ceci

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 
//Le spacer est dans le dd et non après
 
<form id="login" enctype="application/x-www-form-urlencoded" action="" method="post"><dl class="zend_form">
 
<input name="form" value="formLog" id="formLog" type="hidden">
<dt id="emailLog-label"><label for="emailLog" class="optional">E-mail *</label></dt>
<dd id="emailLog-element">
<input name="emailLog" id="emailLog" value="" size="25" type="text">
<div class="spacer">
</div>
 
</dd>
</form>
Voilà je ne trouve pas de solution à ce problème !
Si quelqu'un a déja eu ce problème ou alors une meilleure façon d'ajouter du HTML dans un formulaire ce serais sympa de m'en faire part.
En vous remerçiant.
psylo66 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 17h58   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
la différence m'a l'air là :
Code html :
1
2
3
4
<dd id="emailLog-element">
  <input name="emailLog" id="emailLog" value="" size="25" type="text">
</dd>
<div class="spacer"></div>
Code html :
1
2
3
4
<dd id="emailLog-element">
  <input name="emailLog" id="emailLog" value="" size="25" type="text">
  <div class="spacer"></div>
</dd>
A vue de nez, je dirais que tu dois avoir un decorator html avec une balise dd qui se promène (il me semble d'ailleurs que c'est le decorator par défaut) et qui ne ferme pas son dd au bon endroit. Il doit y avoir un conflit entre le decorator html de ton spacer et celui de ton input email...

Ton spacer sert à quoi au fait ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 00h02   #3
Invité régulier
 
Inscription : mars 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 29
Points : 6
Points : 6
Oui, j'ai peut être mal présenté mon problème mais c'était cette différence que je voulais mettre en avant.

Je ne comprends pas pourquoi sur Mozilla, le spacer est ajouté correctement après et pas sur IE ?

Dans mon code les 2 élements sont pourtant bien distincts , et ajoutés l'un après l'autre, je ne comprends pas ?

Et le spacer sert à remettre à 0 le flux de deux flottants (propriété : clear both), c'est une méthode qui date mais fonctionnelle.

En tout cas peut être importe quel type d'élément je veux ajouter, j'ai quand même ce problème dans le DOM avec IE.
psylo66 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 09h43   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
hum... peut-être que si tu redéfinis complètement les decorateurs de ton spacer en utilisant setDecorators plutot que add et remove...
Code :
1
2
3
4
5
$spacer = new My_Form_Element_Html("spacer") ;
$spacer->setDecorators(array(
    		'ViewHelper',
    	array('HtmlTag', array('tag' => 'div', 'class' => 'spacer')) 
		));
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 13h43   #5
Invité régulier
 
Inscription : mars 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 29
Points : 6
Points : 6
Je viens d'essayer et le résultat est identique.

J'aimerai savoir comment tu fais toi pour ajouter du HTML dans un formulaire.

Est ce que tu t'es créé un helper comme moi ? ou est ce que tu utilises les helpers par défauts de Zend pour les formulaires ?

Si tu utilises les helpers par defaut pour les formulaires pourrais tu m'indiquer un tutoriel pour les utiliser, parce que je ne comprends pas la synthaxe, ou alors me montrer un exemple explicite de la synthaxe ?

En te remerçiant.
psylo66 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2010, 15h33   #6
Membre Expert
 
Avatar de nosferapti
 
Inscription : avril 2009
Messages : 1 157
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 1 157
Points : 1 129
Points : 1 129
Citation:
Envoyé par psylo66 Voir le message
Je ne comprends pas pourquoi sur Mozilla, le spacer est ajouté correctement après et pas sur IE ?
n'oublie pas que dans Firebug, ce n'est pas le code HTML de base mais le code HTML corrigé
et pour IE developper Toolbar je ne connais pas donc soit il affiche le code de base, soit il affiche le code corrigé (mais d'une autre façon que Firefox) donc ça peut être normal de ne pas voir la même chose avec les 2 outils
__________________
GNAP !
nosferapti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2010, 15h07   #7
Invité régulier
 
Inscription : mars 2008
Messages : 29
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 29
Points : 6
Points : 6
Oui je vois ce que tu veux dire mais je ne pense pas que ce soit ça le problème, en regardant avec l'outils de développement de chrome j'ai exactement le même code qu'avec firefox.

Je pense que le problème vient de mon code pour ajouter du HTML dans un formulaire, j'aimerais savoir comment vous le faites ? ou alors avoir un exemple , tutoriel clair à ce sujet ?

En vous remerçiant.
psylo66 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h49.


 
 
 
 
Partenaires

Hébergement Web