Laravel 4

Plusieurs formulaire dans une même page

  • Avatar de EkoZape
    Membre depuis :
    29/09/2014
    Messages :
    5

    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.  

  • Avatar de sergemazille
    Membre depuis :
    16/09/2014
    Messages :
    14

    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.

  • Avatar de EkoZape
    Membre depuis :
    29/09/2014
    Messages :
    5

    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.

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1779

    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.

  • Avatar de JulienTant
    Membre depuis :
    26/03/2013
    Messages :
    463

    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 ;-)

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1779

    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 :'(

  • Avatar de EkoZape
    Membre depuis :
    29/09/2014
    Messages :
    5

    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?

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1779

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

  • Avatar de JulienTant
    Membre depuis :
    26/03/2013
    Messages :
    463

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

    Nouvelle version majeure, nouveau tuto :-)

  • Avatar de EkoZape
    Membre depuis :
    29/09/2014
    Messages :
    5

    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.

  • Avatar de UlrichAGBIMADOU
    Membre depuis :
    03/01/2018
    Messages :
    7

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

Vous ne pouvez pas répondre à ce sujet.