2
votes

Le formulaire Laravel avec la méthode de publication ne se soumet pas

J'ai un formulaire affichant un titre et un corps. Quand je me soumets, rien ne se passe. J'ai un champ csrf et j'utilise la méthode post.

J'ai essayé de nombreuses façons différentes de déclarer l'action et la méthode. J'ai essayé d'appeler le champ csrf de différentes manières également. Rien de tout cela n'a fonctionné.

Route:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    // 
}

Create.blade.php

public function store(Request $request)
    {
        return "Form posted";
    }

PostsController :

<form action="{{route('posts.store')}}" method="POST">
    @csrf
    // removed @method('POST')
    <div class="form-group">
        <label for="title">Title</label>
        <input type="text" name="title" class="form-control" placeholder="Title">
    </div>
    <div class="form-group">
        <label for="body">Body</label>
        <textarea name="body" placeholder="Body" class="form-control" cols="30" rows="10"></textarea>
    </div>
    <input type="button" name="submit" value="Submit" class="btn btn-primary">
</form>

Modèle d'article:

Route::resource('/posts', 'PostsController');

Ici j'ai toutes les routes disponibles: php artisan route: list

La fonction de magasin dans le PostsController est vide. Je m'attends donc à recevoir une page vide lorsque je soumets, mais rien ne se passe.


3 commentaires

pourquoi avez-vous besoin de ceci: @method ('POST') . Essayez d'exécuter php artisan route: list et assurez-vous d'avoir une route nommée appelée posts.store .


ajoutez également le code et le modèle de votre contrôleur.


veuillez ajouter votre code de contrôleur


4 Réponses :


0
votes

Est-ce pour créer un nouveau registre de base de données ou pour en modifier un existant?

Si c'est pour la création, supprimez complètement le bit @method ('POST') . Si c'est à modifier, changez-le en @method ('PATCH') .


4 commentaires

créer un nouveau


pourquoi le vote négatif ?? Je suppose que vous avez le bon modèle et le contrôleur, mais il semble que non. Quoi qu'il en soit, il n'y avait rien de mal à ce que j'ai publié, donc ce vote négatif n'est absolument pas mérité.


Supprimez également le type = "button" du bouton d'envoi dans la vue.


Merci mec! Peut-être que quelqu'un m'a rejeté parce que je n'ai pas formulé correctement le code, je suppose.



0
votes

Supprimez @method('POST')

public function store(Request $request)
{
   echo '<pre>';
   print_r($request->all());
}

Dans votre contrôleur

<form action="{{route('posts.store')}}" method="POST">
     {{ csrf_field() }}
    <div class="form-group">
        <label for="title">Title</label>
        <input type="text" name="title" class="form-control" placeholder="Title">
    </div>
    <div class="form-group">
        <label for="body">Body</label>
        <textarea name="body" placeholder="Body" class="form-control" cols="30" rows="10"></textarea>
    </div>
    <button type="submit" class="btn btn-primary"> Submit  </button>
</form>


4 commentaires

déjà supprimé. Et j'ai essayé toutes les manières possibles d'écrire le champ csrf. Rien ne change.


Pouvez-vous supprimer et ajouter pas sûr mais essayez-le.


c'est ça. Merci mon ami!


Sélectionnez la réponse et votez s'il vous plaît



1
votes

dilip hirapara a donné la solution dans un commentaire.

J'ai supprimé:

<button type="submit" class="btn btn-primary"> Submit </button>

et ajouté:

<input type="button" name="submit" value="Submit" class="btn btn-primary"> 


0 commentaires

0
votes
    <meta name="csrf-token" content="{{ csrf_token() }}">
Put this in your header file. Sometime for csrf we need to put this as a meta tag.

0 commentaires