Laravel - метод POST не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь добавить событие в созданный мной календарь, но получаю следующую ошибку

Метод POST не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD

Я использовал методы @csrf и {{method_field ('PUT')}} безрезультатно. Я также очистил кеш маршрутов, который не помог. Любая помощь очень ценится.

Маршруты:

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::namespace('Admin')->prefix('admin')->name('admin.')->group(function(){
    Route::middleware('can:manage-users')->group(function(){
        Route::resource('/users', 'UsersController', ['except' => ['show']]);
        Route::resource('/courses', 'CoursesController', ['except' => ['show']]);
    });
    Route::middleware('can:manage-calendar')->group(function(){
        Route::get('events', 'EventsController@index')->name('events.index');
        Route::post('/addEvents', 'EventsController@addEvent')->name('events.add');
    });
})

index.blade. php

@extends('layouts.app')
@section ('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-14">
                <div class="card">
                        <div class="card-header">Calendar</div>
                        <div class="card-body">
                        {!! Form::open(array('route' => 'admin.events.index', 'method' => 'POST', 'files' => 'true'))!!}
                            {{-- {{method_field('PUT') }}  
                             @csrf  --}}
                        <div class="row">
                            <div class="col-xs-12 col-sm-12 col-md-12"></div>
                            <div class="col-xs-4 col-sm-4 col-md-4">
                            <div class="form-group">
                            {!! Form::label('event_name', 'Event Name:') !!}
                                <div class="">
                                    {!! Form::text('event_name', null, ['class' => 'form-control']) !!}
                                    {!! $errors->first('event_name', '<p class="alert alert-danger">:message</p>') !!}
                                </div>

@ Коллин, я добавил изображение ниже в отношении на ваш вопрос

enter image description here

Ответы [ 2 ]

2 голосов
/ 21 февраля 2020

Ошибка фактически объясняет проблему. Метод POST не поддерживается для маршрута, который вы используете. Вы пытаетесь отправить на маршрут: admin.events.index, но вы действительно хотите отправить на маршрут events.add.

Route::post('/addEvents', 'EventsController@addEvent')->name('events.add');

  {!! Form::open(array('route' => 'admin.events.add', 'method' => 'POST', 'files' => 'true'))!!}

                            {{-- @csrf  --}}

Добавление в этот awnser - возможное решение для исключения валидатора из OP упомянул в комментариях.

Ошибка не найденного валидатора может быть вызвана следующими причинами:

При добавлении следующего кода:

    public function addEvent(Request $request) 
{ 
$validator = Validator::make($request->all(), 
[ 'event_name' => 'required', 
'start_date' => 'required', 
'end_date' => 'required' ]); 

if ($validator->fails()) 
{ \Session::flash('warning', 'Please enter the valid details'); return Redirect::to('admin.events.index')->withInput()->withErrors($validator);

Попробуйте добавить:

use Illuminate\Support\Facades\Validator;
0 голосов
/ 21 февраля 2020

Просто проверьте ваш URL-адрес действия формы. Вы должны пройти 'route (' admin.events.add) 'вместо' route ('admin.events.index') ', а также не использовать' PUT ', он также примет' POST '.

...