Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 09-08-2009 23:16:03

bistory
Nouveau membre
Date d'inscription: 09-08-2009
Messages: 5

[Zend_Form][1.9] Besoin de quelques infos :)

Bonjour,
Je suis en train d'apprendre le Zend framework, dans le but de remplacer des bibliothèques dépréciées, augmenter la sécurité et diminuer la complexité du code d'un de mes projets.
Je n'utilise donc pas ZF en MVC mais comme une collection de bibliothèques externes.

Je me suis penché sur Zend Form qui va me faire gagner un temps dingue en développement mais j'ai quelques interrogations qui me restent après avoir terminé mon premier formulaire pour m'entraîner smile

Voici mon code :

Code:

$form = new Zend_Form;
$form->setAction('form.php')
     ->setMethod('post');

$el['username'] = $form->createElement('text', 'username', array(
                                                    'required' => true,
                                                    'label' => 'Pseudo'))
                       ->addValidator('alnum');

$el['message'] = $form->createElement('textarea', 'message', array(
                                                    'required' => true,
                                                    'label' => 'Message'));
        
$el['Poster'] = $form->createElement('submit', 'Poster');

$form->addElements($el);

if($form->isValid($_POST))
{
    echo 'Hey valide !';
}
else
{
    if(!$form->getValue('Poster'))
    {
        foreach($el as $id=>$val)
            $el[$id]->removeDecorator('Errors');
    }
    
    $form->setDefaults($form->getValues())
         ->setView(new Zend_View());
    echo $form;
}

Pour le moment, j'utilise un hack :

Code:

    if(!$form->getValue('Poster'))
    {
        foreach($el as $id=>$val)
            $el[$id]->removeDecorator('Errors');
    }

Il me permet, au cas où le formulaire n'a pas été posté, de ne pas afficher les messages d'erreur... Je trouve ça très crade et je me dis qu'à mon avis il y a un autre moyen permettant de n'afficher les messages d'erreur QUE si le formulaire a été posté...

Et l'autre question que je me pose est : y a-t-il moyen de traduire automatiquement les messages d'erreur en français sans devoir définir des messages d'erreur perso (je dois avoir une bonne cinquantaine de formulaires sur mon appli, j'ai pas franchement envie de devoir tout faire à la main big_smile)

Merci de m'éclairer un peu là-dessus wink

Dernière modification par bistory (09-08-2009 23:17:08)

Hors ligne

 

#2 10-08-2009 09:22:48

itecman
Membre
Lieu: Orléans
Date d'inscription: 03-07-2009
Messages: 57

Re: [Zend_Form][1.9] Besoin de quelques infos :)

Salut,

Pour ta première question, je ne comprends pas dans quel cas ton formulaire affichera les erreurs s'il n'a pas été "posté". De ce que j'ai compris, c'est seulement à la validation (submit) de ce dernier que les validateurs vont entrer en action et faire le boulot pour afficher ou non les erreurs.

Pour la deuxième, à ma connaissance non, pas moyen de tout traduire d'un coup de baguette :p ! Je personnalise mes messages d'erreurs dans chaque formulaire. Il a surement un moyen de faire des "aides d'actions" pour améliorer tout ça, mais je ne maitrise pas encore donc ça sera pour après smile.


-- itecman smile

ZF 1.8.4 - Zend Server CE

Hors ligne

 

#3 10-08-2009 09:39:52

GueloSuperStar
Membre
Lieu: Paris
Date d'inscription: 05-08-2009
Messages: 107

Re: [Zend_Form][1.9] Besoin de quelques infos :)

Bonjour,

Je pense que pour automatiser la traduction des formulaires(message d'erreurs, labels,descriptions....), il faut utiliser Zend_translate couplé avec Zend_locale.

Code:

$locale = new Zend_Locale('fr');//tu met la langue que tu veux

$translate = new Zend_Translate('array', APPLICATION_PATH. '/languages',$locale,array('scan' => Zend_Translate::LOCALE_DIRECTORY));

Ensuite dans le répertoire languages tu met des dossiers (fr,en.....) et dans ces répertoires tu met t'es fichier de traductions.

Pour cette exemple j'ai utiliser un adaptateur 'array' donc dans mes fichiers il y aura quelque chose comme

Code:

return array(
            'notAlnum' => "'%value%' ne contient pas que des lettres et/ou des chiffres.",
            'notAlpha' => "'%value%' ne contient pas que des lettres.");

Et normalement grâce au clé du tableau (notAlnum,notAlpha.....), il récupère la bonne traduction dans la langue défini.

En espérant avoir aidé ou donné des idées...


A+ Guelo Super Star

Hors ligne

 

#4 10-08-2009 15:10:50

ubini
Membre
Lieu: gillarens/Suisse
Date d'inscription: 23-01-2008
Messages: 110
Site web

Re: [Zend_Form][1.9] Besoin de quelques infos :)

Salut,
Il faut dans un premier temps vérifier que des données ont été postées avant de vouloir les valider. Dans la structure MVC du ZF, on le fait de la sorte :

Code:

if(!$this->getRequest()->isPost())
{
    // affiche le formulaire de base
}
elseif(!$form->isValid($_POST))
{
   // affiche le formulaire avec les erreures
} else {
    $values = $form->getValues();
    // traitement des données
}

++


http://www.easyswap.org - site d'échange de biens et de services conçu avec jQuery et Zend Framework
http://www.lambelet.net - mon blog perso et inutile

Hors ligne

 

#5 10-08-2009 21:57:15

bistory
Nouveau membre
Date d'inscription: 09-08-2009
Messages: 5

Re: [Zend_Form][1.9] Besoin de quelques infos :)

Merci à tous pour vos réponses, malheureusement, je ne peux pas me permettre d'utiliser la structure MVC, ça m'obligerai à refactorer 5 ans de code, je n'ai ni le temps ni l'envie de le faire, même si il faudra qu'un jour ou l'autre j'y passe, d'ici là, j'aurai pu apprendre mieux le zend framework big_smile

Je vais donc devoir continuer à bricoler pour la validation des formulaires et faire les traductions à la main dans une classe à part ^^

Bonne soirée/journée (dépendant de l'heure à laquelle vous verrez ce message big_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