Laravel - 此路由不支持 POST 方法。支持的方法:GET、HEAD
Laravel - The POST method is not supported for this route. Supported methods: GET, HEAD
我想在我创建的日历上添加一个事件,但是我收到以下错误
The POST method is not supported for this route. Supported methods:
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>
@Collin,关于你的问题,我添加了下面的图片
错误其实说明了问题。您正在使用的路线不支持方法 POST。您正在尝试 post 到路线:admin.events.index 但您实际上想 post 到路线 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;
只需检查您的表单操作 url 路由。你必须通过'route('admin.events.add)' 而不是'route('admin.events.index')' 并且也不要使用 'PUT' 它也会接受 'POST'。
我想在我创建的日历上添加一个事件,但是我收到以下错误
The POST method is not supported for this route. Supported methods: 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>
@Collin,关于你的问题,我添加了下面的图片
错误其实说明了问题。您正在使用的路线不支持方法 POST。您正在尝试 post 到路线:admin.events.index 但您实际上想 post 到路线 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;
只需检查您的表单操作 url 路由。你必须通过'route('admin.events.add)' 而不是'route('admin.events.index')' 并且也不要使用 'PUT' 它也会接受 'POST'。