Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#26 20-03-2014 13:03:21

romsVLM
Membre
Date d'inscription: 23-01-2014
Messages: 89

Re: Problème avec la validation d'un formulaire

Donc je met mon ExchangeArray() ainsi que les getters, et j'enlève mes setters ?

Hors ligne

 

#27 20-03-2014 13:29:00

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Problème avec la validation d'un formulaire

flobrflo a écrit:

Orkin, tu a le droit d'utiliser les "_" dans tes variables.

Oui je sais bien big_smile. C'est juste que dans les bonnes pratiques du ZF2 c'est camelCase les noms de variable wink. Donc autant prendre les bonnes habitudes dès le début. Après je l'accorde c'est un peu chiant avec Zend\Db pour les noms d'attribut dans les tables j'ai pas trop le soucis puisque j'utilise doctrine et il y a une annotation qui permet de choisir le nom de l'attribut donc à ce moment là je peux mettre un "_".

flobrflo a écrit:

romsVLM le exchangeArray te permet le "set" de l'objet complet. Mais tu ne peu pas les récupérer ensuite si tu ne met pas les getters.

Le exchangeArray sert effectivement à remplir l'objet donc il joue le rôle de setter dans le cas où tu lui passes le retour de ton formulaire sous forme d'un array. Sauf que dans le cas où tu utilises le bind et l'hydration il ne retourne plus un array mais l'objet que tu lui as bindé donc elle ne sert plus puisque c'est le formulaire qui se charge de remplir l'objet. Et dans son cas si il peut les récupérer sans getter puisque les attributs sont publiques. Donc là si son objet est vide c'est uniquement parce qu'il n'est pas hydraté wink.

romsVLM a écrit:

J'ai rajouté les setters et getters, mon tableau est bien rempli maintenant. Merci beaucoup.

C'est pas un tableau ... C'est un objet Commande. Faut vraiment faire attention à ça quand tu utilises les formulaires avec les hydrateurs et que tu lui bind un objet c'est ce même objet qu'il te retourne. On pourrait même aller plus loin :

Code:

[lang=php]
$commande = new Commande();
$monForm->bind($commande);
...
if ($monForm->isValid()) {
    $monForm->getData() === $commande // l'objet est passé par référence
    $commande = $monForm->getData(); // On fait ça pour la lecture c'est plus simple mais c'est au final inutile puisque
    //$monForm->getData() retourne le même objet que $commande pour le vérifier il suffit de faire un var_dump des deux et de
    //regarder l'id de l'objet ;)
}

romsVLM a écrit:

Par contre si ça ne te dérange pas, peux tu me donner quelques explications ?
Pourquoi sans getters et setters, mon objet n'a pas été hydraté ? N'étais ce pas le rôle de ExchangeArray($data) ?

Là c'est plus vraiment lié au ZF2 c'est un problème à la POO, un attribut d'objet est toujours privé et non publique donc le seul moyen de pouvoir le modifier est de passer par des getters et des setters. On aura beau dire que le Java a plein de défaut mais au moins là dessus il impose d'être rigoureux. Et donc l'hydrateur pour remplir ton objet il fait :

Code:

[lang=php]$setter = 'set' . conversionCamelCase($nomInput);
$object->$setter($value);

pour affecter les valeurs à ton objet. Sans setters bah il rempli rien. Les getters dans ton cas tu peux les virer vu que tes attributs sont publiques (c'est dégueulasse mais bon ...). Et le exchangeArray si tu t'en sers pas tu peux le virer il sert à rien et il n'est pas appelé par l'hydrateur.

Hors ligne

 

#28 20-03-2014 16:59:48

romsVLM
Membre
Date d'inscription: 23-01-2014
Messages: 89

Re: Problème avec la validation d'un formulaire

Merci, tout marche niquel , je suis passé en camelCase et j'ai tout mis en private.

J'en ai appris des choses avec ce post 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