Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 10-02-2008 12:41:32

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

Zend_Form et Ini

Salut à tous, comme beaucoup d'entre vous je me suis mis à Zend_Form qui est plus que pas mal à ce que j'ai vu.
Bon enfin bref j'ai un soucis, enfin plusieurs points pas clair que j'ai rencontré en voulant utiliser une zend_config pour mon form.
J'ai le fichier suivant (regardez bien à l'intérieur je pose des questions smile ):

Code:

;;;; Register ;;;;
; general form metainformation
user.register.action = "/user/register"
user.register.method = "post"
user.register.id = "user_register"
user.register.prefixPath.validate.Rx_Validate = "Rx/Validate/"

;; Ici déjà j'arrive pas à envoyer des messages d'erreurs, j'ai testé plusieurs bidouilles sans succès (translation(s), translator, otpions.translator... en mettant directement pour chaque item du form... Ca marche pas non plus

user.register.translator.stringEmpty = "Ce champ est requis"
user.register.translator.stringLengthTooShort = "Les données saisies sont trop courtes"
user.register.translator.stringLengthTooLong = "Les données saisies sont trop longues"
user.register.translator.notAlnum = "Uniquement des chiffres et des lettres"
user.register.translator.emailAddressInvalid = "Adresse e-mail invalide, veuillez la vérifier"

; name element
user.register.elements.name.type = "text"
user.register.elements.name.options.label = "Nickname"
user.register.elements.name.options.class = "text"
user.register.elements.name.options.validators.strlen.validator = "StringLength"
user.register.elements.name.options.validators.strlen.options.min = "6"
user.register.elements.name.options.validators.strlen.options.max = "100"
;;La j'ai testé pleins de trucs...
user.register.elements.name.options.validators.strlen.translation = "Les données saisies sont trop courtes"
user.register.elements.name.options.validators.strlen.translator = "Les données saisies sont trop courtes"
user.register.elements.name.options.validators.strlen.messages.min = "Les données saisies sont trop courtes"
user.register.elements.name.options.validators.strlen.options.translation.min = "Les données saisies sont trop courtes"
user.register.elements.name.options.required = true
user.register.elements.name.options.filters.lower.filter = "StringToLower"

; email element
user.register.elements.email.type = "text"
user.register.elements.email.options.label = "E-mail"
user.register.elements.email.options.class = "text"
user.register.elements.email.options.validators.email.validator = "EmailAddress"
user.register.elements.email.options.required = true
user.register.elements.email.options.filters.lower.filter = "StringToLower"

; password element
user.register.elements.password.type = "password"
user.register.elements.password.options.label = "Password"
user.register.elements.password.options.class = "text"

;;Deuxième soucis, j'ai pas réussi à utiliser un de mes validateurs, avez vous réussi??

;user.register.elements.password.options.validators.confirmation = "PasswordConfirmation"
user.register.elements.password.options.validators.strlen.validator = "StringLength"
user.register.elements.password.options.validators.strlen.options.min = "6"
user.register.elements.password.options.required = true

; password element
user.register.elements.password_confirm.type = "password"
user.register.elements.password_confirm.options.label = "Confirmation Password"
user.register.elements.password_confirm.options.class = "text"

; submit element
user.register.elements.login.type = "image"
user.register.elements.login.options.value = "img/ico/fff/accept.png"

Voila donc je rèpte vite fait mes problèmes:
- Messages d'erreurs
- Propres validateurs

Merci à vous wink

Hors ligne

 

#2 10-02-2008 13:16:12

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

Re: Zend_Form et Ini

Bon alors pour les validateurs perso j'ai fini par trouver

Code:

; password element
user.register.elements.password.type = "password"
user.register.elements.password.options.label = "Password"
user.register.elements.password.options.class = "text"
user.register.elements.password.options.prefixPath.validate.prefix = "Rx_Validate"
user.register.elements.password.options.prefixPath.validate.path = "Rx/Validate/"
user.register.elements.password.options.validators.confirmation = "PasswordConfirmation"
user.register.elements.password.options.validators.strlen.validator = "StringLength"
user.register.elements.password.options.validators.strlen.options.min = "6"
user.register.elements.password.options.required = true

Bizarrement, l'ajout par .options.prefixPath. n'a pas marcher sur le form lui même mais que sur l'élement
J'ai lu ça qui m'a aidé un peu: http://www.nabble.com/Zend_Form_Element … 16154.html

Me reste plus qu'à traduire smile

Hors ligne

 

#3 10-02-2008 17:42:58

dividy
Membre
Date d'inscription: 21-01-2008
Messages: 21

Re: Zend_Form et Ini

Tu dois reprendre les fichiers du trunk SVN car Matthew de chez Zend a corrigé quelques bugs concernant Zend_Form, l'as-tu déjà fait ? J'ai posté un topic à ce sujet


In Zend, I Trust

Hors ligne

 

#4 10-02-2008 20:25:51

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

Re: Zend_Form et Ini

Je vais voir ça.

Sinon rien pour traduction depuis le .ini ??

Hors ligne

 

#5 12-02-2008 10:20:56

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

Re: Zend_Form et Ini

J'ai pas envie de me faire chier à passer un translator vu que j'en ai pas... tout mon site et en français et je ne penses pas le traduire un jour (quoique?)
[Flegmemode] Bon au pire vous savez comment filer un translator par Ini?

Hors ligne

 

#6 31-03-2008 15:06:47

Badoux
Membre
Date d'inscription: 25-03-2008
Messages: 32

Re: Zend_Form et Ini

Salut vous deux smile

Alors... ce n'est pas moi qui va vous apporter grand aide, mais étant en pleine phase d'apprentissage, je suis curieux de tout ce qui touche à Zend et en ce moment c'est Zend_Form, qui m'intéresse smile

Je suis aussi curieux de savoir comme passer un translate à un ini ! En fait, j'aimerai incrémenter les label, en fonction de mon translate ! Vous voyez le truc ?
Pour reprendre l'exemple, de Mr.MoOx wink

Au lieu de :

Code:

user.register.elements.password.options.label = "Password"

je voudrai un truc du genre:

Code:

user.register.elements.password.options.label = $this->translate->password

Biensûr, je sais que passer du code, dans un CVS, n'est pas réalisable. Je souhaitai simplement vous donner un exemple concret de ce que je veux faire wink


Deuxième question:
En fait, je veux comme vous utiliser un ini, pour créer mes Form. Cependant, je n'arrive absolument pas à mettre la main sur une doc complète à ce sujet.
En fait, j'ai trouvé (je crois sur un des posts du forum) qu'il faillait faire ça:

Code:

$configuration['allowModifications'] = 'true';
$config = new Zend_Config_Ini('../views/scripts/index/_form.ini', 'development', $configuration);
$form = new Zend_Form($config->user->login);
$this->view->form = $this->render($form);

J'ai placé par bonne conscience wink ce bout de code dans l'action ajouterAction de mon IndexController.

Mais il m'affiche ce message d'erreur:


Fatal error: Uncaught exception 'Zend_Config_Exception' with message 'Section 'development' cannot be found in ../views/scripts/index/_form.ini' in E:\wamp\www\projects\pleegs\staging\library\Zend\Config\Ini.php:156 Stack trace: #0 E:\wamp\www\projects\pleegs\staging\application\controllers\IndexController.php(46): Zend_Config_Ini->__construct('../views/script...', 'development', Array) #1 E:\wamp\www\projects\pleegs\staging\library\Zend\Controller\Action.php(502): IndexController->ajouterAction() #2 E:\wamp\www\projects\pleegs\staging\library\Zend\Controller\Dispatcher\Standard.php(293): Zend_Controller_Action->dispatch('ajouterAction') #3 E:\wamp\www\projects\pleegs\staging\library\Zend\Controller\Front.php(914): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #4 E:\wamp\www\projects\pleegs\staging\index.php(61): Zend_Controller_Front->dispatch() #5 {main} thrown in E:\wamp\www\projects\pleegs\staging\library\Zend\Config\Ini.php on line 156


Je suspect que cela vienne du chemin au _form.ini (que j'ai placé dans le dossier /application/views/scripts/index/ de mon app "Hello world" wink)

Voila, voilou ;D

Merci d'avance !

Dernière modification par Badoux (31-03-2008 15:07:49)

Hors ligne

 

#7 01-04-2008 09:23:19

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

Re: Zend_Form et Ini

Non, ton ini est bien trouvé, mais il manque la section development.
Ton ini devrait ressembler à ça:

Code:

[development]
user.register....
user.register....
user.register....

Hors ligne

 

#8 01-04-2008 11:02:39

Badoux
Membre
Date d'inscription: 25-03-2008
Messages: 32

Re: Zend_Form et Ini

Hé, hé, mon incompétence (en explication) me fera courir à ma perte wink

En fait, mon ini est constitué de ceci:

Code:

[development]
user.login.action = "/user/login"
user.login.method = "post"

; username element
user.login.elements.username.type = "text"
user.login.elements.username.options.validators.alnum.validator = "alnum"
user.login.elements.username.options.validators.regex.validator = "regex"
user.login.elements.username.options.validators.regex.options.pattern = "/^[a-z]/i"
user.login.elements.username.options.validators.strlen.validator = "StringLength"
user.login.elements.username.options.validators.strlen.options.min = "6"
user.login.elements.username.options.validators.strlen.options.max = "20"
user.login.elements.username.options.required = true
user.login.elements.username.options.filters.lower.filter = "StringToLower"

; password element
user.login.elements.password.type = "password"
user.login.elements.password.options.validators.strlen.validator = "StringLength"
user.login.elements.password.options.validators.strlen.options.min = "6"
user.login.elements.password.options.required = true

; submit element
user.login.elements.submit.type = "submit"

l'exemple ci-dessus, était uniquement à titre indicatif.

Une idée ? Maintenant, que vous connaissez l'ensemble du fichier ?

Le truc, c'est que je suis entrain de test sur un "Hello world" et j'ai reprise exacte l'exemple que j'ai trouvé dans la doc de Zend, mais rie à faire ! Je comprend pas d'où vient ce message !

Hors ligne

 

#9 04-06-2008 12:07:26

Damien
Membre
Lieu: Tassin la Demi Lune
Date d'inscription: 22-03-2007
Messages: 88

Re: Zend_Form et Ini

Bonjour,

Je pense qu'il faut mettre dans ton .ini pour la traduction

user.register.translator.isEmpty = "Ce champ est requis"

car la chaine à traduire quand on utilise un fichier de traduction est isEmpty.

Si quelqu'un pouvait m'indiquer où je pourrais trouver la liste complète des ID des messages ce serait génial.

Merci

Dernière modification par Damien (04-06-2008 12:10:43)

Hors ligne

 

#10 28-10-2008 00:28:26

jon301
Nouveau membre
Date d'inscription: 12-10-2008
Messages: 4

Re: Zend_Form et Ini

Coucou

Désolé de upper ce post qui date de quelques mois déjà, mais je suis également confronté à ce problème hmm
Comment utiliser Zend_Translate pour traduire les labels ou messages d'erreurs d'un Zend_Form configuré dans un fichier INI ?

Merci d'avance smile

Hors ligne

 

#11 28-10-2008 07:03:17

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

Re: Zend_Form et Ini

Pour les ID des messages il suffit d'aller dans l'API : http://framework.zend.com/apidoc/core/ et d'ouvrir la classe Zend_Validate, tout est là.
Sinon dans son source dans le ZF.

Pour le translate directement dans le INI il semble que ce ne soit pas possible, en espérant que ça évolue.
Personnellement je n'aime pas avoir une partie de mon formulaire dans un fichier et la partie traduction dans le code...

Hors ligne

 

#12 28-10-2008 12:00:11

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

Re: Zend_Form et Ini

Ben moi en fait je transmet en général mes messages au form en mettant les clés (de mon translator) dasn les labels, après je passe l'objet translator au form qui se débrouille.
J'ai un classe qui surcharge Zend_Form et qui transmet tout seul le translator s'il existe (tout comme le helper de vue translate(), j'utilise Zend_Registry::get('Zend_Translate').
C'est facile est avec cette solution, tu dois pouvoir avoir tes clés de messages dans ton .ini et pas de code spécifique pour chaque form. Non?

Hors ligne

 

#13 28-10-2008 13:04:25

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: Zend_Form et Ini

Hello,

Le comportement par défaut de Zend_Form sans surcharge nécessaire est de chercher un objet Zend_Translate dans le registre (paramétré auparavant par Zend_Registry::get('Zend_Translate')).

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#14 28-10-2008 16:20:40

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

Re: Zend_Form et Ini

LOL, moi je me faisais chier pour rien smile
Bon c'est pas grâve je l'ai pas surchargé que pour ça! Ouf ^^

Hors ligne

 

#15 06-05-2009 21:19:25

citronbleu-v
Membre
Lieu: Béziers ou Arles
Date d'inscription: 03-02-2009
Messages: 79
Site web

Re: Zend_Form et Ini

Bonjour,

merci pour les informations,

alors pour Zend_Translate ça marche bien pour les modules Array ou encore Csv saufs bien sûr Gettext. J'ai essayé de tricher en mettant dans Poedit > Configuration > Chemins > motclé > .options.label = ".
Ça ne fonctionne pas sad, dommage, je pense qu'on est obligé de mettre le mot clé entre parenthèses.
Donc du coup je vais sûrement faire un mix de Gettext avec les tableaux ou csv.

Cependant j'ai quand même une solution archaïque pour utiliser Gettext au maximum, c'est de mettre dans un fichier text les mots clés puis parser avec Poedit. C'est bien pratique pour les phrases de validation et presque pas pour les labels de formulaires puisque ça revient presque au même que le csv :

exemple du fichier text en question :
translate->_('stringLengthTooShort')
translate->_('stringLengthTooLong')
translate->_('isEmpty')
translate->_('Mon label 1 :')
translate->_('Mon label 2 :')

enfin voilà je ne sais pas encore mon choix pour les labels de Zend_Form, car le but c'est que mes .ini puissent se changer par des personnes qui ne connaissent pas Zend_Framework. Donc je pense que le plus simple restera de passer mes traductions par un .csv.

Enfin si quelqu'un trouve une bonne solution avec Gettext je suis prenant smile.

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