J'essaye d'employer la méthode de détruire de Laravel (5.3) pour supprimer un objet quand j'appuie sur un bouton, cependant j'obtiens une MethodNotAllowedHttpException.Laravel 5.3 delete méthode donne methodNotAllowed avec spoofing
Mon itinéraire est
Route::delete('/admin/add/{id}', '[email protected]');
La méthode destroy est
public function destroy($id)
{
$items = Item::where('id', $id)->get();
foreach ($items as $item)
$item->delete();
return redirect('/admin/add');
}
Ma forme est
<form action="{{ url('admin/add/'.$specific->id)}}" method="POST">
{{ method_field('DELETE') }}
{{ csrf_field() }}
<div class="modal-footer no-border">
<button type="submit" class="btn btn-primary">Delete</button>
</div>
</form>
J'ai vérifié les routes existantes (php itinéraire artisan: liste), et l'un montre:
DELETE | admin/add/{id} | | App\Http\Controllers\[email protected]
L'erreur que je reçois est
in RouteCollection.php line 218
at RouteCollection->methodNotAllowed(array('GET', 'HEAD', 'POST')) in RouteCollection.php line 205
at RouteCollection->getRouteForMethods(object(Request), array('GET', 'HEAD', 'POST')) in RouteCollection.php line 158
at RouteCollection->match(object(Request)) in Router.php line 766
at Router->findRoute(object(Request)) in Router.php line 621
at Router->dispatchToRoute(object(Request)) in Router.php line 607
at Router->dispatch(object(Request)) in Kernel.php line 268
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104
at Pipeline->then(object(Closure)) in Kernel.php line 150
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 117
at Kernel->handle(object(Request)) in index.php line 53
at require('/Users/username/Sites/blades/public/index.php') in server.php line 133
les instructions de routage Laravel, j'utilise une forme et usurper l'action SUPPRIMER en utilisant une méthode POST, mais je suis toujours faire une exception. Toute aide serait appréciée.
NOTE: J'ai suivi l'exemple complet à https://laravel.com/docs/5.2/quickstart-intermediate, et cela fonctionne parfaitement bien. Mes tentatives pour recréer ceci dans un projet différent sont ce qui cause le problème.
Pouvez-vous vérifier le code HTML généré? On dirait que votre formulaire renvoie une demande POST après tout. –
Il semble envoyer une demande POST. J'ajoute une mise à jour ci-dessus parce que j'ai trouvé quelque chose d'assez étrange. – abe678