【问题标题】:Laravel - The POST method is not supported for this route. Supported methods: GET, HEADLaravel - 此路由不支持 POST 方法。支持的方法:GET、HEAD
【发布时间】:2020-06-05 17:59:11
【问题描述】:

我正在尝试在我创建的日历上添加一个事件,但是我收到以下错误

此路由不支持 POST 方法。支持的方法: 得到,头

我使用了 @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,我在下面添加了与您的问题相关的图片

【问题讨论】:

    标签: php laravel laravel-5 laravel-routing


    【解决方案1】:

    错误实际上解释了问题。您正在使用的路由不支持 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 在 cmets 中提到的验证器异常的可能解决方案。

    验证器未找到错误可能来自以下原因:

    添加以下代码时:

        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;
    

    【讨论】:

    • 您好,感谢您的回复,我已添加“使用 Illuminate\Support\Facades\Validator;”到我的EventsController,但是当'addEvent'尝试重定向到'admin.events.index'时,我仍然收到错误'404 Not Found'。我有点困惑,因为这条路线确实存在?我感谢您的帮助。谢谢。
    • 你能做 php artisan route:list, 路由出现了吗?
    • 设法解决了重定向问题,我尝试了几种不同的重定向路由的方法,这很有效 - return redirect()->route('admin.events.index'); ..而不是 return Redirect::to('admin.events.index');这不起作用并返回“未找到”...我不知道有多种路由方式..无论如何这都是一个学习曲线..再次感谢您的帮助 - 非常感谢。
    【解决方案2】:

    只需检查您的表单操作 url 路由。您必须传递 'route('admin.events.add)' 而不是 'route('admin.events.index')' 并且不要使用 'PUT' 它也会接受 'POST'。

    【讨论】:

    • 嗨,谢谢您的回复.. 我按照建议进行了更改,但是在我的 EventsController 中出现了另一个错误 - '找不到验证器类'.. 我继续添加这个,这很好。我想知道您是否能提供进一步的帮助.. 我在验证器中返回的重定向现在显示为“404 未找到”,我不确定我做错了什么.. 我正在尝试重定向到成功添加事件时的“admin.events.index”。我将在下面粘贴我的代码。感谢您的帮助。
    • EventsController: public function addEvent(Request $request) { $validator = Validator::make($request->all(), [ 'event_name' => 'required', 'start_date' => '必需', 'end_date' => '必需' ]); if ($validator->fails()) { \Session::flash('warning', '请输入有效的详细信息'); return Redirect::to('admin.events.index')->withInput()->withErrors($validator);
    • @KerryMckinney 检查我的遮阳篷,我将为验证器异常添加一个可能的解决方案
    猜你喜欢
    • 2020-04-19
    • 2021-05-08
    • 2020-01-22
    • 2020-04-25
    • 1970-01-01
    • 2019-08-28
    • 2019-08-31
    • 2021-05-05
    相关资源
    最近更新 更多