Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
salut à tous,
J'ai 2 petits soucis avec les decorators pour Zend_Form_Element_File et Zend_Form_Element_Submit :
- Pour Zend_Form_Element_File, je n'arrive pas à mettre de décorateurs, j'ai essayé plusieurs choses :
// Décorateurs : $decorators = array ( 'ViewHelper', 'Errors', array('Description', array('tag' => 'p', 'class' => 'description')), array('HtmlTag', array('tag' => 'td')), array('Label', array('tag' => 'th')), array(array('tr' => 'HtmlTag'), array('tag' => 'tr')) ); $formDecorators = array( 'FormElements', array('HtmlTag', array('tag' => 'table','class'=>'form-table')), 'Form', array('File', array('tag' => 'table','class'=>'form-table')) ); ////////////////////////////////////////////////////////////////////// $file_one = new Zend_Form_Element_File('fileupload_1'); $file_one->setLabel('Fichier image #1 : ') ->addValidator('Count', false, 1) ->addValidator('Extension', false, $extensions) ->addValidator('FilesSize', false, $maxFileSize); //->setDecorators($decorators); //->setDecorators($formDecorators); $file_one->getValidator('Extension')->setMessage('Extensions valides : .jpg, .jpeg, .gif et .png'); $file_one->getValidator('FilesSize')->setMessage('La taille du fichier est trop importante'); ... ... $this->setDecorators($formDecorators);
Si je met le decorateur "$decorators", j'ai un message d'erreur :
Warning: Exception caught by form: No file decorator found... unable to render file element Stack Trace:
Il ne trouve pas le décorateur File, ce qui semble normal.
Mais comment le rajouter ? J'ai donc testé avec le décorateur $formDecorators qui ne semble pas marcher non plus (il me le sort du formulaire <form>)
- Ensuite, comment virer le label du Zend_Form_Element_Submit ?
So je fais ceci :
$submit = new Zend_Form_Element_Submit('submit'); $submit->setLabel('Valider') ->setDecorators($decorators); $submit->removeDecorator('Label');
il m'enleve aussi le th, et evidemment, le design est cassé.
Si je met le SetLabel à '', cela me vire le Label, mais aussi le texte du bouton (fait en CSS), et le setValue ne marche pas :
$submit = new Zend_Form_Element_Submit('submit'); $submit->setLabel('') ->setValue('Valider') ->setDecorators($decorators);
Merci à tous
Fabrice
Hors ligne
Hello,
Personne ne sait ?
Fabrice
Hors ligne
1/ Pour le "no décorator File", c'est simple, il suffit de l'ajouté dans ton $decorators (et pas $formdecorators) :
$decorators = array ( 'File', 'Errors', array('Description', array('tag' => 'p', 'class' => 'description')), array('HtmlTag', array('tag' => 'td')), array('Label', array('tag' => 'th')), array(array('tr' => 'HtmlTag'), array('tag' => 'tr')) );
2/ Suffit de ne pas mettre de décorateur Label
Hors ligne
salut,
he non, cela ne marche pas, le fait de rajouter 'File' dans le décorateur provoque une erreur.
Je crois que je vais laisser tomber les décorateurs. En lisant pas mal de doc la-dessus, cela semble bien compliqué.
A moins qu'une solution soit trouvé pour le 'File', il ne me manque plus que çà
Fabrice
Hors ligne
Hello,
Quelle version de ZF ? C'est normalement corrigé ce problème de décorateur File depuis un moment.
@+
Hors ligne
hello,
la derniere, j'utilise le trunk du svn.
Merci
Fabrice
Hors ligne
__fabrice a écrit:
hello,
la derniere, j'utilise le trunk du svn.
Merci
Fabrice
Pas bien d'utiliser le trunk..
Perso, je n'ai pas de problème avec ce décorateur
Je viens d'ailleurs de tester en collant directement cela dans un de mes formulaires :
$this->addElement('file', 'fich', array( 'decorators' => array ( 'File', 'Errors', array('Description', array('tag' => 'p', 'class' => 'description')), array('HtmlTag', array('tag' => 'td')), array('Label', array('tag' => 'th')), array(array('tr' => 'HtmlTag'), array('tag' => 'tr')) ), 'label' => 'test', ));
($this étant l'objet zend_form)
aucuns soucis
Hors ligne
Effectivement, ton code marche aussi chez moi.
Et pourquoi ce n'est pas bien d'utiliser le trunk, c bien la derniere version stable non ?
Il faut vraiment mettre ce décorateur au type file, parce que si fais çà :
$decorators = array ( 'File', 'Errors', array('Description', array('tag' => 'p', 'class' => 'description')), array('HtmlTag', array('tag' => 'td')), array('Label', array('tag' => 'th')), array(array('tr' => 'HtmlTag'), array('tag' => 'tr')) );
pour tous, çà marche plus.
Merci
Fabrice
Dernière modification par __fabrice (26-10-2009 11:35:50)
Hors ligne
ok, çà, çà marche nickel :
$decoratorsFile =array ( 'File', 'Errors', array('Description', array('tag' => 'p', 'class' => 'description')), array('HtmlTag', array('tag' => 'td')), array('Label', array('tag' => 'th')), array(array('tr' => 'HtmlTag'), array('tag' => 'tr'))); $file_one = new Zend_Form_Element_File('fileupload_1'); $file_one->setLabel('Fichier image #1 : ') ->addValidator('Count', false, 1) // ensure only 1 file ->addValidator('Extension', false, $extensionsImg) ->addValidator('FilesSize', false, $maxFileSize) ->setDecorators($decoratorsFile); $file_one->getValidator('Extension')->setMessage('Extensions valides : .jpg, .jpeg, .gif et .png'); $file_one->getValidator('FilesSize')->setMessage('La taille du fichier est trop importante');
Merci
Fabrice
Hors ligne
Beh oui, tu l'as compris, le décorateur File, c'est uniquement pour le composant File Pas pour tous
non, le trunk, c'est la version de developpement
Pour être en stable, regarde ce que tu trouves dans "tags"
Dernière modification par nORKy (26-10-2009 13:26:40)
Hors ligne
nORKy a écrit:
non, le trunk, c'est la version de developpement
Pour être en stable, regarde ce que tu trouves dans "tags"
Ou les "branches" mais surtout pas le trunk
Hors ligne
mikaelkael a écrit:
nORKy a écrit:
non, le trunk, c'est la version de developpement
Pour être en stable, regarde ce que tu trouves dans "tags"Ou les "branches" mais surtout pas le trunk
Je ne sais pas comment travaille l'équipe de dev du ZF, mais "théoriquement", on utilise les branches pour des branches parallèle du trunk (donc en developpement aussi)
Par exemple, on veut continuer de travaillé sur le ZF 1.9.4 tous en developpement le 2.0 :
le 2.0 devrait se trouvé dans trunk, et le 1.9.4 en developpement sur branches/1.9.4 (qui deviendra tags/1.9.5)
Maintenant, c'est la théorie des mots et les pratiques conseillé par les auteurs de subversion.
Je n'ai pas été voir l'organisation du repository du ZF, et il est surement plus complexe que ce que je décris.
Tout ca pour dire qu'il vaut mieux être qq part dans tags et éviter branches (et surtout pas trunk)
Hors ligne
ok, donc, il faut utiliser le "tag" de la dernière version.
Par contre, j'ai cherché un peu partout pour supprimer le label, sans le texte du bouton css, et ma foi, sans trop de succes.
Merci à tous
Fabrice
Dernière modification par __fabrice (26-10-2009 21:19:28)
Hors ligne
__fabrice a écrit:
ok, donc, il faut utiliser le "tag" de la dernière version.
Par contre, j'ai cherché un peu partout pour supprimer le label, sans le texte du bouton css, et ma foi, sans trop de succes.
Merci à tous
Fabrice
Je te l'ai dit, tu ne mets pas le décorateur Label (mais tu laisses places la valeur du label)
Hors ligne
Salut,
Oui, mais non , çà marche pas et c normal. Si je vire le décorateur 'Label', le "th" n'existe plus, donc cela casse tout le design du tableau.
Il me faut juste le tag label mais sans valeur sans tu veux. Comme çà :
<tr> <th id="submit-label"> <label class="optional" for="submit"></label> </th> <td> <input id="submit" type="submit" value="Valider" name="submit"/> </td> </tr>
Fabrice
Hors ligne
beh dans ce cas, tu mets une valeur vide setLabel('');
Oui mais on tourne en rond
Donc, autre astuce :
label[for=submit] { display: none; }
Dernière modification par nORKy (27-10-2009 17:11:21)
Hors ligne
j'avais bien sur essayé avec le SetLabel à '', mais çà met aussi la valeur du input du bouton, donc, un bon bouton CSS sans texte
Pour le CSS, oui, y'a cette astuce qui n'est pas forcement bonne pour IE (IE sucks !!!). Mais c'est pour une interface d'admin et je ne cherche pas à les faire compatible ave IE.
Merci à tous
Fabrice
Hors ligne
Pas pour IE ?!
Arg.. je vais pas tout te faire non plus
array('Label', array('tag' => 'th', 'class' => 'monbouttonquejeveuxpasvoir')),
.monbouttonquejeveuxpasvoir { display: none; }
Hors ligne
hello,
ok merci, mais j'avais déjà fait pareil
Merci à tous.
Fabrice
Hors ligne
Pages: 1