Метод удаления Laravel 5.3 предоставляет метод NotAllowed со спуфингом

Я пытаюсь использовать метод уничтожения Laravel (5.3) для удаления объекта, когда я нажимаю кнопку, однако я получаю исключение MethodNotAllowedHttpException.

Мой маршрут

Route::delete('/admin/add/{id}', 'ItemController@destroy');

Метод уничтожения

public function destroy($id)
{
$items = Item::where('id', $id)->get();
foreach ($items as $item)
$item->delete();
return redirect('/admin/add');
}

Моя форма

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

Я проверил существующие маршруты (php artisan route: list), и удаление показывает:

DELETE   | admin/add/{id}   |          | App\Http\Controllers\ItemController@destroy

Я получаю ошибку

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

Согласно инструкциям по маршрутизации Laravel, я использую форму и подделываю действие DELETE с помощью метода POST, но я все еще получаю исключение. Любая помощь будет оценена.

НОТА: Я последовал полному примеру на https://laravel.com/docs/5.2/quickstart-intermediate, и это прекрасно работает там. Мои попытки воссоздать это в другом проекте — вот что является причиной проблемы.

1

Решение

Пожалуйста, проверьте что $specific->id не нуль, как dd($specific->id), после того, как откройте консоль разработчика в вашем браузере и откройте страницу сети, и проверьте, какой URL правильный.

0

Другие решения

Я нашел проблему. Страница, на которой была эта форма, имела другую форму POST над ней, и я закрыл форму с </div> а не </form> тег. Из-за этого он пытался отправить обе формы одновременно, и вызовы POST были конфликтующими.

0

По вопросам рекламы [email protected]