et oui tu n'as pas le choix !
pour info depuis sf2.8 je crois. il existe hinclude : une sorte d'include asynchrone avec un script hinclude.js associé. On peut l'envoyer à un controlleur ...
jamais utilisé mais c'est bon à savoir..
Version imprimable
et oui tu n'as pas le choix !
pour info depuis sf2.8 je crois. il existe hinclude : une sorte d'include asynchrone avec un script hinclude.js associé. On peut l'envoyer à un controlleur ...
jamais utilisé mais c'est bon à savoir..
Dans ce cas je n'ai pas le comportement naturel qu'offre le form.factory avec twig au niveau de la gestion des erreurs comme:
et la conservation des données saisies par l'utilisateur.Code:{{ form_errors(form) }}
Est-ce qu'il y aurait un moyen de passer les erreurs éventuelles et aussi les valeurs saisies par l'utilisateur par la redirection et de les réinjecter dans un formulaire vierge sur la home?
Pour l'info et la patience dont tu fais preuve ;-).
pas à ma connaissance. Essais de créer un autre sujet avec cette question si quelqu'un peut te répondre.
et oui car on ne peut pas cibler comme ça une partie de la page html sinon en utilisant javascript.
le render et include classique se contente d'assembler la vue à la construction et ensuite on ne peut plus y toucher.
je crois que justement hinclude permet de mettre à jour directement la partie du code grace à sa bibliothèque hinclude.js.
donc envois du form et retour du form. à vérifier....
sinon il y a la méthode AJAX, envois du formulaire en ajax et retour du form
OK,
Je te remercie, tu as été d'une grande aide, je commençais à rager sur Symfony2... Je développe PHP depuis un certain temps mais je commence symfony2 depuis quelques semaines et je trouve que se comportement n'est pas naturelle.
De ce que je croyais le bundle était équivalent à de façon générale à Snippet avec pour qualité de pouvoir vivre en stand alone mais aussi imbriquer les uns dans les autres. Hors ce n'est pas le cas :deçu:!
Encore merci à toi!
php, Symfony ou n'importe quel framework php ils ont le même comportement.
si tu veux du dynamique, des zones indépendants alors il n'y a qu'une seule solution : AJAX
et d'ailleurs symfony facilite la chose .
tu gardes le même principe de render controller
seulement le submit c'est la fonction ajax qui s'en occupe. il envoie le formulaire à une action du controleur qui lui même après traitement envois à l'envoyeur la vue partiel(avec le formulaire ou pas) . la req AJAX reçoit la réponse qui met à jour la zone ciblé avec le contenu de la reponse.
donc le controlleur envoi comme message en réponse une vue partiel(avec un formulaire ou pas)... pratique
Oui je vais m'informer sur les possibilités en ajax, j'y suis presque dans ma progression du MOOC Symfony2.
En attendant je vais mettre un form validator en JS au submit.
Ceci étant je ne comprends toujours pas pourquoi le scope du RequestHandler de Sympfony2 n'est pas global au même titre que la superglobale $_POST. Du coup je ne comprends son utilité "Request $request".
J'aurais très bien pu valider le formulaire traditionnellement avec $_POST qui après vérification est bien présent dans mon controller inclus.
Quand à ta question technique, tu peux la poser sous forme d'un nouveau message. Peut être on pourra t'apporter une solution
Comme c'est bientôt noel, je t'offre en cadeau la req ajax JQuery :
dans l'action :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $("form").submit(function(e){ // attention si tu as plusieurs form dans la vue e.preventDefault(); // on bloque l'envoi du formulaire par le navigateur $.ajax({ type:"POST", data: $(this).serialize(), // le formulaire est sérialisé url:"{{ url('action_req_ajx') }}", // l'action du contrôleur cache: false, success: function( data ){ $("......").html(data); // met à jour la zone (vérifier la syntaxe exacte) } }); return false; });
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 $form = ........; if ($request->isXmlHttpRequest()) { // si $request est AJAX traitement du formulaire $vue = construction de la vue partiel (+ $form avec ou sans les erreurs validations) // la reponse à la requete AJAX $response = new Response( json_encode($vue) ); $response->headers->set('Content-Type', 'application/json'); return $response; } else { // ici, c'est la demande de la vue. (pas la requete AJAX) rendre la vue avec $form->create }
et pour finir, Symfony à prévu la chose avec le hinclude qui fait la même chose en moins de ligne (à voir je n'ai jamais testé)
d'ailleurs le hinclude intègre un petite lib js (surement du code ajax)
Merci Père Noël :-)!