Laravel 4

Plusieurs formulaire dans une même page

Avatar de EkoZape
EkoZape

Salut,

J'ai dans une même page trois formulaires. Le premier est pour émettre un commentaire au sujet d'un article avec un champ texte et un bouton d'envoi. Les deux autres formulaire sont respectivement un bouton J'aime / Je n'aime pas. Thumb Up ou Thumb Down si vous préférez.

Je veux rediriger chaque formulaire dans le même Contrôleur avec des méthodes différente. Je croyais que je n'aurais qu'à mettre dans mon Form::open l'option Action => Controller@Method mais cette façon me donne une erreur. Cette erreur ne me renvois pas d'information susceptible à m'aiguiller comment la corriger.

Je n'ai pas dans ma route.php une Route::post() et je suis perdu. Je n'arrive pas à concevoir comment réussir à faire allez mes formulaires dans leur méthode respective.

Avec un seul formulaire dans la même page je n'ai pas de soucis car j'utilise une route vers la méthode que je veux. Mais voilà, avec trois formulaires sur la même page, j'ignore complètement comment procéder.

Toute aide ou début de piste serais plus qu'apprécier.

Merci.  

Posté il y a 5 ans
Avatar de sergemazille
sergemazille

Salut EkoZape !

J'aurais tendance à te dire de ne pas utiliser de formulaires pour les boutons "like/dislike".
Peut-être devrais-tu essayer d'envisager de les traiter côté client avec une requête ajax. Ça te permettra de les découpler de ton controller, de ne pas recharger la page, et éventuellement de les réutiliser ailleurs que dans les articles.

Ce serait pas mal que tu dises quel est le message d'erreur. Si quelqu'un est déjà tombé dessus, ça peut l'aiguiller.

Posté il y a 5 ans
Avatar de EkoZape
EkoZape

En ce moment je ne peux écrire le message d'erreur car je n'ai pas mon portable avec moi en ce moment. Par contre, je crois avoir une idée de ce qui ne marche pas. C'est que je n'ai pas fait de route (post) en croyant peut-être à tort que 'action' => Controller@Method remplaçais la route pour un formulaire. Gérer un formulaire d'un URL via une route, je sais le faire. Mais trois formulaire via une seule URL voilà une autre histoire. route::controller peut-être, mais je ne comprend pas encore assez ce concept pour être en mesure de résoudre mon problème. Pour les boutons like/dislike coté client, c'est une solution. Je préfère coder tout coté serveur pour le moment car je ne maitrise pas du tout le ajax.

Je vais resté patient et essayer d'en apprendre plus sur le fonctionnement de Laravel, j'aimerais beaucoup avoir mon site fonctionnel avant la sorti officiel de la version 5, qui déjà va me demander de réapprendre le peu que j'ai déjà appris lol :D

J'apprécie tout de même ta réponse.

Posté il y a 5 ans
Avatar de bestmomo
bestmomo

Salut et bienvenu EkoZape,

On met autant de formulaires qu'on veut sur une page et heureusement ! J'en ai parfois 3 (un principal, un pour la recherche sur le site, un pour générer un verbe spécifique...) et ça fonctionne très bien. Ton souci vient apparemment effectivement de la création des routes. Tu dois avoir toutes tes routes créées. Pour faire le point sur les routes disponibles tu peux utiliser la commande d'artisan php artisan routes.

Quant à Laravel 5 il v falloir effectivement réapprendre pas mal :D.

Posté il y a 5 ans
Avatar de JulienTant
JulienTant

En terme de sémantique, le formulaire est tout à fait approprié pour les boutons like/dislike. En effet, quand on y réfléchi, l'action derrière cela doit entrainer un changement d'état, de ce fait, un simple lien ne convient pas.

c'est dommage qu'on ai pas plus d'infos sur ton erreur.

PS : Mon avis est qu'il n'y a pas tant de choses qui vont changer. Mis à part la structure des dossiers, rien n'empêche d'utiliser Laravel presque comme avant ;-)

Posté il y a 5 ans
Avatar de bestmomo
bestmomo

JulienTant :PS : Mon avis est qu'il n'y a pas tant de choses qui vont changer. Mis à part la structure des dossiers, rien n'empêche d'utiliser Laravel presque comme avant ;-)

Ce qui change surtout c'est quand on veut mettre à jour un tutoriel, un vrai carnage :'(

Posté il y a 5 ans
Avatar de EkoZape
EkoZape

Avec mon boulot qui ne me laisse pas beaucoup de temps pour bidouiller avec Laravel, j'ai tout de même réfléchie à mon problème. Comme je n'ai pas vraiment le temps de testé ce qui m'est venu en tête, dites moi si je suis sur une bonne piste.

Voilà, si je donne une route à chaque formulaire, je peux dans la Form::open indiqué cette route et juste par la suite rediriger vers mon View à la fin de ma méthode?

Posté il y a 5 ans
Avatar de bestmomo
bestmomo

Pour chaque formulaire un Form::open(...), une route, une méthode, un traitement, une vue...

Posté il y a 5 ans
Avatar de JulienTant
JulienTant

bestmomo :Ce qui change surtout c'est quand on veut mettre à jour un tutoriel, un vrai carnage :'(

Nouvelle version majeure, nouveau tuto :-)

Posté il y a 5 ans
Avatar de EkoZape
EkoZape

Bon j'ai eu enfin le temps de testé et si ça peux aidé un autre, j'explique le truc.

Au début, disons que j'ai une page www.monsite.com/messages je croyais je devais avoir la route::get('/message') et que tout mes formulaire devait passé par la route::post('/message')

Bon, je me disais comment est-ce que la route::post('/message') peux bien faire pour savoir quel formulaire à été cliquer.


Maintenant j'ai compris que l'ont dois juste faire une route quelconque par exemple: route::post('/envoyer-message') et la nommer avec 'as' et la diriger avec 'uses' vers le controller/méthode.

Après la méthode ont Redirect vers la route::get('/message') et basta.

Dans le Form::open ont dois bien sur envoyer le formulaire avec l'option route vers le nom de la route qui envois vers la fonction désiré.

Sur ce, bonne journée à vous les amis.

Posté il y a 5 ans
Avatar de FLEMO
FLEMO

bonjour, mon second formulaire que j'appelle avec un redirect m'affiche des erreurs sans sauvegardes dans la base mysql. Comment faire svp?

Posté il y a 2 ans

Vous ne pouvez pas répondre à ce sujet.