Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-10-2009 13:57:27

rebolon
Membre
Date d'inscription: 25-05-2009
Messages: 13

[résolu][1.9][Zend_Form] mettre 1 valeur par défaut ne fonctionne pas

Bonjour,

j'explore Zend_Form et je me heurte à un souci : mettre une valeur par défaut dans un champ.
dans la méthode init de mes Forms, j'ai tenté d'utiliser element->setValue(), element->setDefault() et même le populate... sans succès.

En fait si je fait un getValue( NomDeMonElement ), je récupère bien la valeur setté par setValue ou setDefault, mais dans l'interface graphique, rien n'est affiché. L'attribut "value" de l'élément reste désepéremment vide.

Que faut il faire ? je ne trouve rien dans la doc à ce sujet...

Merci

Dernière modification par rebolon (28-10-2009 13:35:40)

Hors ligne

 

#2 23-10-2009 16:49:09

_Fuse_
Membre
Lieu: Aquitaine
Date d'inscription: 10-07-2008
Messages: 92

Re: [résolu][1.9][Zend_Form] mettre 1 valeur par défaut ne fonctionne pas

Bonjour,

Pour mettre une valeur dans un champ texte, on récupère l'élément du formulaire, puis on 'set' l'élément

$form = new MonFormulaire();

//récupération de l'élément et 'set de la valeur
$form->getElement('monelement')->setValue('maValeur');

Dans le cas ou c'est déjà ce que tu fais, vérifis bien qu'aucun traitements n'est ensuite effectué sur le champ du formulaire.

Si c'est pour un element select c'est identique, mais les données de celui-ci seront chargées avec la methode addMultiOption() et la methode setValue() determinera l'un de ses éléments par défaut.

++

Hors ligne

 

#3 26-10-2009 08:46:20

rebolon
Membre
Date d'inscription: 25-05-2009
Messages: 13

Re: [résolu][1.9][Zend_Form] mettre 1 valeur par défaut ne fonctionne pas

ok merci pour l'info.
Je pense que le soucis venait du fait qu'il y avait un isValid($postData) plus bas => il réaffectait les postData au formulaire.

Du coup y a t il un moyen de faire un isValid en lui demandant de ne pas réaffecter les données ?

Merci

Hors ligne

 

#4 26-10-2009 10:41:39

rebolon
Membre
Date d'inscription: 25-05-2009
Messages: 13

Re: [résolu][1.9][Zend_Form] mettre 1 valeur par défaut ne fonctionne pas

solution temporaire : faire un clone de mon objet formulaire et faire le isValid sur le clone.
Pas gégé car duplique l'objet, mais au moins le isValid ne rempli pas l'objet formulaire d'origine (comportement non souhaité sur mon appli)

Hors ligne

 

#5 26-10-2009 11:20:09

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

Re: [résolu][1.9][Zend_Form] mettre 1 valeur par défaut ne fonctionne pas

C'est quand même bizarre comme raisonnement :
Valider un formulaire non rempli...


----
Gruiiik !

Hors ligne

 

#6 27-10-2009 09:34:01

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

Re: [résolu][1.9][Zend_Form] mettre 1 valeur par défaut ne fonctionne pas

En général, on ne fait pas un isValid seul mais plutôt de cette façon

Code:

if ($this->_request->isPost() and $form->isValid($this->_request->getPost()))

Du coup si on n'est pas sur une requête post, on n'essaye même pas de valider le form.

Hors ligne

 

#7 28-10-2009 10:58:09

rebolon
Membre
Date d'inscription: 25-05-2009
Messages: 13

Re: [résolu][1.9][Zend_Form] mettre 1 valeur par défaut ne fonctionne pas

Je suis d'accord avec MoOx pour le fonctionnement.

En fait je suis surtout sur un exercice de style concernant le Zend Framework :
Je suis parti du postulat qu'il y a souvent dans une base de donnée des tables qui n'ont que 2 champs (id/label).  Ces tables permettent de gérer des listes facilement éditable via l'administrateur. Je voulais donc faire un CRUD sur ces tables en automatisant au maximum le process et qui puisse être utilisé dans différent comportement d'ergonomie :
   1 -> on affiche la liste des tables concernées -> on choisi la table -> on réaffiche la page en gardant le premier formulaire + le nouveau formulaire d'ajout + la liste du contenu de la table sélectionné, liste qui permet d'éditer ou supprimer un item => on se retrouve avec plusieurs formulaires
   2 -> on affiche la liste des tables concernées -> on choisi la table -> on part sur le formulaire d'ajout => on a un seul formulaire à chaque fois
   3 -> on par sur le même principe que 1 mais au lieu de rafraichir on utilise Ajax

Les contraintes sont donc importantes :
dans 1 on doit identifier en permanence quel formulaire a été posté (s'il y a eu post)
il doit y avoir une action principale qui se charge d'appeler les autres actions
ces autres actions doivent également pouvoir fonctionner en solo (mode Ajax ou refresh)
on doit pouvoir charger un formulaire et un modèle différent selon le premier choix effectué
on doit pouvoir identifier le nom de la clé primaire si on est dans un système où la convention n'existe pas (cas choisi par ZendF)

Après quelques jours de travail sur cet exercice où j'ai regardé en profondeur Zend_Controller, Zend_Form, Zend_Db_Table, et où mon bout d'appli fonctionne bien, je peux dire :
que ZendF est vraiment lourd par rapport à un copix par exemple
que le Zend_Tool est vraiment riquiqui par rapport à un symfony (pas de génération auto des formulaires ni même des modèles)
que Zend_Db_Table n'est pas pratique pour faire de l'édition ou de la suppression puisque l'on est obligé de générer la partie Where de la requete => obligation de surcharger soi-même pour limiter cette contrainte
que Zend_Form est facile à utiliser avec un formulaire, mais pas avec plusieurs => obligation de surcharger pour mettre ce type de mécanisme en place
que ZendF n'est pas assez directif pour être certains que ses développeurs codent bien tous de la même manière.
qu'il faut donc surcharger beaucoup de classe pour arriver à ses fins, sans garanties que l'on fasse les bons choix (bonne pratique, performance, ...)

Hors ligne

 

#8 28-10-2009 12:28:34

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

Re: [résolu][1.9][Zend_Form] mettre 1 valeur par défaut ne fonctionne pas

Le Zend Framework n'est pas lourd, c'est un framework, un framework souple, étendable à souhait, et découplé proposant de (très) nombreux outils. Il est encore jeune mais ne cesse d'évoluer à une vitesse impressionante.
Zend_Tool est un outil récent, mais on est tenté de penser qu'il aura dépassé les possibilités qu'offrent Symfony d'ici quelques temps (ou pas)

Zend_Db_Table n'est pas pratique pour faire de l'édition ou de la suppression puisque l'on est obligé de générer la partie Where de la requete => obligation de surcharger soi-même pour limiter cette contrainte

Et Zend_Db_Table_Row ??

Zend_Form est facile à utiliser avec un formulaire, mais pas avec plusieurs => obligation de surcharger pour mettre ce type de mécanisme en place

C'est un peu ça le secret de la POO.
Après peu être que ton choix sous forme de formulaire lié n'est pas très ergonomique mais ça c'est un autre problème. J'dis ça, j'dis rien.

ZendF n'est pas assez directif pour être certains que ses développeurs codent bien tous de la même manière.

En même temps, c'est pas le but d'un framework. Il est là pour nous aider, pas pour nous guider.

[...] il faut donc surcharger beaucoup de classe pour arriver à ses fins, sans garanties que l'on fasse les bons choix (bonne pratique, performance, ...)

Pour les choix et les perfs, le framework ne peut faire ça à ta place. Je répète il est là pour nous assiter pas pour faire le taf à notre place.
Mais tu voudrais peut être faire ton appli comme ça ?

Code:

$tool = new Zend_Tool(array('connector' => 'brain'));
$tool->receiveData('usb', 'ass');
$tool->generateApp();

big_smile

Hors ligne

 

#9 28-10-2009 13:07:31

rebolon
Membre
Date d'inscription: 25-05-2009
Messages: 13

Re: [résolu][1.9][Zend_Form] mettre 1 valeur par défaut ne fonctionne pas

C'est une bonne îdée de module pour Zend, ça me plait ;-)

ZendF comme boite à outil : effectivement je m'en suis déjà servi comme ça pour plein de projet, mais PEAR (que je n'ai jamais apprécié) faisais déjà la même chose (mais sans l'appui de Zend, oui j'en suis conscient).

Zend_Db_Table_Row : je vais y jeter un coup d'oeil plus sérieusement, à la première lecture, ça peut être intéressant et se rapprocher d'un système de DAO

Surcharge = secret de la POO : pas tout à fait, c'est un des éléments de la POO. A partir de là, si je dois surcharger toutes les classes du framework pour atteindre mon but, c'est que le framework est certes étendable à souhait, mais surtout il ne répond pas à mes attentes et m'oblige à faire une surcharge de Framework pour avoir en avoir un utilisable et fournissant toute les fonctionnalités à mes développeurs => myFramework extends ZendFramework, bah dégueu et soucis liés aux évolutions du framework de base. Mais bon c'est un choix.

Tout à fait d'accord avec toi, un framework est là pour nous aider, pas pour faire les tâches à notre place. Maintenant si je dois me poser plein de question quant à la manière d'utiliser le framework Zend, c'est que ce dernier ne nous aide pas tant que ça. Quand on lit la doc d'un framework on doit être capable de monter son application rapidement. C'est le cas avec Copix, Jelix, Symfony et plein d'autres. Maintenant pour faire un CRUD avec Zend, il n'y a rien d'officiel, et sur le web, vous n'en trouvez pas un seul qui se ressemble (logique d'implémentation différente, Fat Controller, erreur de conception, utilisation de Zend_Db mais pas de Zend_Db_Table, Pas de Zend_Form, surcharge multiple des classes de base... ).

Contrairement à toi, je considère qu'un framework doit aussi nous guider. Dailleurs ZendF nous dit bien comment on doit nommer nos classes et les stocker dans l'arborescence. Le problème avec ZendF se situe surtout au niveau du MVC. Pour le reste, ça reste une très bonne librairie, mais pour le MVC, à nous laisser trop de liberté, on voit fleurir n'importe quoi à droite ou à gauche. Il y a aussi, et heureusement de très bonne chose, mais contrairement à un framework plus directif ou la convention prend le pas sur la configuration, on voit beaucoup plus de déchet.

Pour les choix d'archi et de performance, évidemment que le framework peut nous orienter, et heureusement, sinon pourquoi y aurait il autant de bench comparant les frameworks pour une fonctionnalité donnée.

J'espère que ZendF deviendra un bon framework car il en va du futur de PHP et de sa crédibilité en entreprise. Je suis aussi conscient que beaucoup d'entreprise cherche des développeurs avec des compétences sur ZendF, mais aujourd'hui, j'ai toujours un doute sur le fait de partir avec ce framework. A laisser trop libre les développeur/analyste programmeur/ingénieur/consultant, on risque d'obtenir un projet difficilement maintenable au bout de quelques mois/années.

Hors ligne

 

#10 28-10-2009 13:34:15

rebolon
Membre
Date d'inscription: 25-05-2009
Messages: 13

Re: [résolu][1.9][Zend_Form] mettre 1 valeur par défaut ne fonctionne pas

Remarque concernant le côté peu ergonomique du formulaire lié :
   1 j'ai dit que c'était un exercice de style afin de mieux assimiler le ZendF
   2 quand on développe des applis à destination des desktop et des smartphones, l'utilisation d'ajax n'est pas forcément recommandé (smartphone) et il est recommandé de fournir à l'utilisateur le moyen de réaliser ses actions avec un minimum de clic. S'il est obligé de cliquer sur précédent/retour/unBoutonQuelconqueDeRetour/UnLienDansUnMenu pour revenir au premier formulaire autant jeter l'application de suite. Et si en pour être compatible multi-support je dois envisager de faire des controllers spécifiques, alors mieux vaut changer de métier

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