web-dev-qa-db-fra.com

La méthode POST n'est pas prise en charge pour cet itinéraire. Méthodes prises en charge: GET, HEAD. Laravel

J'ai un problème avec ma page d'édition. Lorsque je soumets, j'obtiens cette erreur:

La méthode POST n'est pas prise en charge pour cette route. Méthodes prises en charge: GET, HEAD.

Je n'ai aucune idée d'où cela vient car je suis assez nouveau à Laravel.

itinéraires (web.php):

Route::group(['middleware' => 'auth'], function () {
Route::get('/', 'ProjectController@index');

Route::get('/projects/{id}', 'ProjectController@show');
Route::post('/create','ProjectController@store');
Route::get('/create', 'ProjectController@create');
Route::get('/projects/{id}/delete', 'ProjectController@destroy');
Route::put('/edit','ProjectController@update');
Route::get('/projects/{id}/edit', 'ProjectController@edit');

});

Manette:

 public function edit($id)
    {
        return view('project.edit',[

            'project' => Project::find($id)
        ]);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request)
    {
        $project = Project::find($request->id);
        $project->project_name = $request->input('project_name');
        $project->client = $request->input('client');
        $project->description = $request->input('description');
        $project->time_span = $request->input('time_span');
        $project->text_report = $request->input('text_report');
        $project->created_by = $request->input('created_by');

        $project->save();

        return  redirect('/')->with('success', 'Project aangepast');
    }

enter image description here

14
JohnSmith2521

Si vous utilisez un groupe Route ::, avec un plugin fournisseur comme LaravelLocalization (de MCAMARA), vous devez mettre POST routes en dehors de ce groupe. J'ai rencontré des problèmes avec POST routes utilisant ce plugin et je l'ai résolu en ce moment en mettant ces routes en dehors de Route :: group ..

1
Paulo Cardozo

Salut, vous n'avez pas à écrire toutes les routes, suivez simplement les conventions https://laravel.com/docs/5.8/controllers vérifiez: Actions gérées par le contrôleur de ressources section

Étant donné que les formulaires HTML ne peuvent pas effectuer de demandes PUT, PATCH ou DELETE, vous devrez ajouter une _méthode cachée. Lorsque vous publiez des données de n laravel vous devez utiliser,

<form action="/foo/bar" method="POST">
@method('PUT')
</form>
0
Anoop P S

Le moyen le plus simple de résoudre ce problème consiste à l'ajouter à votre formulaire.

{{ csrf_field() }}
<input type="hidden" name="_method" value="PUT">

alors la méthode de mise à jour sera comme ceci:

public function update(Request $request, $id)
{
    $project = Project::findOrFail($id);
    $project->name = $request->name;
    $project->description = $request->description;

    $post->save();
}
0
idrissAbbou

Je viens de supprimer la barre oblique à la fin de l'URL et elle a commencé à fonctionner ... /managers/games/id/Push/ à:

$http({
  method: 'POST',
  url: "/managers/games/id/Push",

Cela peut être lié à la mise à niveau vers laravel 5.8?

0
Harry Bosh

Si vous avez un semoir dans votre base de données, lancez php artisan migrate: fresh --seed

0
Shane Kelly

J'ai eu un problème similaire et la seule solution était de redémarrer vagrant que j'utilise comme environnement de développement. À côté de cela, pas un seul artisan et la commande composer n'a pas aidé.

0
darko99

principalement ce type d'erreur génère, 1. d'abord vérifier un code, dans le code, nous définissons @ csrf

<form method ="post" action={{url('project'')}}
   @csrf
   ...... 

2.Lorsque nous définissons un nom de variable erroné, ce moment s'est également produit ce type de problème.

ex. si votre nom de champ de base de données "xyz" et que vous utilisez un "wxyz"

3.si notre méthode est de forme incorrecte, vérifiez donc notre méthode. ex. <form method="post">

0
Vinit Dabhi

ajouter @method ('PUT') sur le formulaire

exp:

<form action="..." method="POST">

@csrf  

@method('PUT')



</form>
0
pezhman vaziri