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');
}
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 ..
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>
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();
}
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?
Si vous avez un semoir dans votre base de données, lancez php artisan migrate: fresh --seed
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é.
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">
ajouter @method ('PUT') sur le formulaire
exp:
<form action="..." method="POST">
@csrf
@method('PUT')
</form>