Bonjour à vous tous.
J'ai une petit problème à vous exposer, à déjà savoir si ma modélisation est possible.
Voila voila :
En résumé je souhaiterai récupérer une Entité envoyé à un template twig pour l'envoyer vers mon contrôler.
En d'autres termes :
Controller : render->template(monTwig, 'cpt'-> Entity)
monTwig : Modification des valeurs, initialisé par les attributs de l'Entity au préalable. Envoyer l'entity modifié vers mon controller
Controller : persist(Entity)
Voila ce que j'aimerai faire. c'est une approche Objet au complet.
Ce que j'ai cru comprendre pouvoir être possible :
- Créer un formulaire via formBuilder
- Passer en paramètre de ce formulaire une entité
- Instaurer le formulaire dans la vue twig
- Manipulation du formulaire par l'utilisateur
- Soumission
- récupération du formulaire
- Créer une entité vide et la Remplir à travers les données du formulaire
- Persist
D'accord, ce principe peut exister, mais personnellement je ne suis friand de formulaire et préfère être plus maitre de mes balisages. (peut-être ais-je tord, je n'ai d'expertise html/php)
Voila donc où j'en serai :
Controller :
Mon twig html :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public function adhesionUnAction() { // create an Account $compte = new CompteAcces(); $compte = $this->getDoctrine() ->getRepository('PldAccountBundle:CompteAcces') ->findOneById(1); return $this->render('PldAccountBundle:Default:adhesionCompte.html.twig', (array('cpt' => $compte,))); }
Le javascript
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <p class="toCoord"> <label for="iemail"> E-mail : </label> <input id="iemail" value="{{ cpt.eMail }}"/> </br> <label for="icemail"> Confirmer E-mail : </label> <input id="icemail"/> </br> <label for="imdp"> Mot de passe : </label> <input id="imdp" value="{{ cpt.pwd }}"/> </br> <label for="icmdp"> Confirmer Mot de passe : </label> <input id="icmdp"/> </p> <input id="send_un" type="submit" click=/>
Le controlleur de mise à jour (pour l'instant je fait juste un test echo)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 $(document).ready(function() { $('input#send_un').click(function(){ save({{cpt}}); }) } ); function save(cpt) { alert(cpt.email); if(cpt != null) { $.get(Routing.generate('updateCompte', {'cpt':cpt})); } }
J'aimerai donc pouvoir faire ceci, hors cela ne fonctionne au niveau de mon javascript , {{cpt}}, en effet il ne comprend pas l'objet, attendant un String. De même, j'ai tendance à croire que "cpt" ne correspond à rien, cpt.eMail et cpt.mdp étant interprété de suite en string, je ne suis sur qu'on puisse "stocké" une entité comme ça. si ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 /** * @Route("/adhesion1Update/{cpt}", name="updateCompte", options={"expose"=true}) */ public function adhesionUnUpdateAction($cpt) { $compte = new CompteAcces($cpt); echo($compte->getEMail()); return new Response($compte->getEMail()); }
J'ai donc essayer une classe javascript et la fonction associé :
Ici tout marche, normal, l'objet est reconnu et envoyé. hors, bien entendu, coté php (le controller), il ne correspond à rien !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 var maClassA = function(email, mdp) { this.email = email; this.mdp = mdp; } $('input#send_un').click(function(){ var objet = new maClassA($('input#iemail').val(), $('input#imdp').val()); save(objet); })
Me renvoie "" au lieu de tujrf@lr.com par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 /** * @Route("/adhesion1Update/{cpt}", name="updateCompte", options={"expose"=true}) */ public function adhesionUnUpdateAction($cpt) { $compte = new CompteAcces($cpt); echo($compte->getEMail()); }
Comment donc faire à comprendre que $cpt correspond à l'objet spécifié dans javascript ? Existe-t-il un binding de classe php-javascript, pour qu'il se reconnaissent ?
C'est à dire, quelque chose du genre
class AJava { nom : string}
Binding[class=Ajava]
class Aphp {nom : string }
ou un autre procédé ?
Vous l'aurez compris, je débute php/javascript à travers symphony
Puis, si j'ai un formulaire de 15 champs, ce serai tellement bien de pouvoir récupérer cet objet "cpt" et simplement le renvoyé, étant renseigné dynamiquement par l'utilisateur ou pas. Dois-je faire 15 fois, objet.paramX = champX.val() ? Il me faut déjà régler la concordance java/php. Si je peut éviter un appel controller du genre
$.get(Routing.generate('updateCompte', {'x1': x1, 'x2': ......... : x15}));
J'espère ne pas avoir été confus, dites le-moi si des points sont obscur. Je suis à l'écoute de d'autres méthode pouvant être meilleur, j'apprends, j'apprends..
Merci
Partager