首页 > 解决方案 > 在 laravel 7.30.4 中不允许此路由发布方法

问题描述

我的 Web 应用程序中有此错误:

此路由不支持 POST 方法。支持的方法:GET、HEAD、PUT、PATCH、DELETE。

但我不明白我的问题在哪里,因为我的路线:列表命令返回:

|        | GET|HEAD  | calendario                                 | calendario.index         | App\Http\Controllers\EventController@index                             | web        |
|        | POST      | calendario                                 | calendario.store         | App\Http\Controllers\EventController@store                             | web        |
|        | GET|HEAD  | calendario/create                          | calendario.create        | App\Http\Controllers\EventController@create                            | web        |
|        | GET|HEAD  | calendario/{calendario}                    | calendario.show          | App\Http\Controllers\EventController@show                              | web        |
|        | PUT|PATCH | calendario/{calendario}                    | calendario.update        | App\Http\Controllers\EventController@update                            | web        |
|        | DELETE    | calendario/{calendario}                    | calendario.destroy       | App\Http\Controllers\EventController@destroy                           | web        |
|        | GET|HEAD  | calendario/{calendario}/edit               | calendario.edit          | App\Http\Controllers\EventController@edit                              | web        |

我想使用 route::resource 在我的完整日历中创建事件。

我的路线:

Route::resource('calendario', 'EventController');

在我看来,我可以检查一下我是否在该路线上进行编辑、存储或显示:

<form action="{{ Request::is('calendario/*/edit') ? route('calendario.update', $event->id) : route('calendario.create') }}" method="POST">
                    {{ csrf_field() }}

                    @if(Route::currentRouteName() == 'calendario.edit')
                        @method('PUT') 
                    @endif

在我的网络浏览器控制台中,我有一条正确的路线:

<form action="http://www.clinicacampoy.local/calendario/create" method="POST">
                    <input type="hidden" name="_token" value="rVb2ycSugwg0weAbZucdI8RzBi9uT7QumGArJOOW">

                    
                    <div class="form-group">
                        <label for="nombre">Nombre</label>
                        <input type="text" class="form-control" name="nombre" id="nombre" value="" aria-describedby="emailHelp" placeholder="Nombre del cliente">
                    </div>
                    <div class="form-group">
                        <label for="fecha-inicio">Fecha-hora Inicio</label>
                        <input type="text" value="" class="form-control" name="fecha_inicio" id="fecha-inicio">
                    </div>
                    <div class="form-group">
                        <label for="fecha-inicio">Fecha-hora fin</label>
                        <input type="text" value="" class="form-control" name="fecha_fin" id="fecha-fin">
                    </div>
                    <input type="submit" class="btn btn-info" value="Crear Cita">
                </form>

但返回这个错误,我不知道我做错了。此刻,在我的控制器中,我echo知道我已经到了

标签: phplaravellaravel-7

解决方案


你应该使用store而不是createin route('calendario.create')

create方法是一个 get 方法,负责创建视图。存储逻辑应该在 store 方法中。如果你想使用Route::resource


推荐阅读