我正在尝试在我的程序中创建一个新的“机载”测试,并得到一个405 MethodNotAllowed异常。
路由
Route::post('/testing/{id}/airbornes/create', [
'uses' => 'AirborneController@create'
]);控制器
public function create(Request $request, $id)
{
$airborne = new Airborne;
$newairborne = $airborne->newAirborne($request, $id);
return redirect('/testing/' . $id . '/airbornes/' . $newairborne)->with(['id' => $id, 'airborneid' => $newairborne]);
}视图
<form class="sisform" role="form" method="POST" href="{{ URL::to('AirborneController@create', $id) }}">
{{ csrf_field() }}
{!! Form::token(); !!}
<button type="submit" name="submit" value="submit" class="btn btn-success">
<i class="fas fa-plus fa-sm"></i> Create
</button>
</form>发布于 2018-12-10 08:33:00
据我所知,表单没有href属性。我认为你应该写Action,但是写了href。请在试图提交的表单中指定action属性。
<form method="<POST or GET>" action="<to which URL you want to submit the form>">就你的情况而言
<form method="POST" ></form>动作属性丢失了。如果action属性丢失或设置为“”(空字符串),表单将提交给自己(相同的URL)。
例如,您已经将显示表单的路由定义为
Route::get('/airbornes/show', [
'uses' => 'AirborneController@show'
'as' => 'airborne.show'
]);然后提交一个没有action属性的表单。它将将表单提交到它当前所在的同一条路径上,它将使用相同的路径查找post方法,但是您没有使用POST方法的相同路径。因此,您将得到MethodNotAllowed异常。
要么用post方法定义相同的路由,要么显式地指定HTML表单标记的action属性。
假设您的路径定义为:将表单提交给
Route::post('/airbornes/create', [
'uses' => 'AirborneController@create'
'as' => 'airborne.create'
]);所以您的表单标记应该是
<form method="POST" action="{{ route('airborne.create') }}">
//your HTML here
</form>发布于 2018-12-07 22:53:05
HTTP方法所指定的MethodNotAllowedHttpException指示您的路由不可用。可能是因为没有正确地定义它,或者它与另一个类似命名的路由有冲突。
命名路由
考虑使用指定的路由,以便方便地生成URL或重定向。一般情况下,维护起来容易得多。
Route::post('/airborne/create/testing/{id}', [
'as' => 'airborne.create',
'uses' => 'AirborneController@create'
]);Laravel集体
使用Laravel的表单:打开标记并删除表单::token()
{!! Form::open(['route' => ['airborne.create', $id], 'method' =>'post']) !!}
<button type="submit" name="submit" value="submit" class="btn btn-success">
<i class="fas fa-plus fa-sm"></i> Create
</button>
{!! Form::close() !!}dd()帮助函数
dd函数转储给定的变量并结束脚本的执行。反复检查您的机载类是否返回您所期望的对象或标识。
dd($newairborne)列出可用路由
始终确保所定义的路由、视图和操作匹配。
php artisan route:list --sort name发布于 2018-12-10 08:46:20
首先是
表单没有href属性,它有"action“
<form class="sisform" role="form" method="POST" action="{{ URL::to('AirborneController@create', $id) }}">二次
如果上面的更改不起作用,您可以进行如下更改:
1.路由
给出你的路线的名称如下:
Route::post('/testing/{id}/airbornes/create', [
'uses' => 'AirborneController@create',
'as' => 'airborne.create', // <---------------
]);2.视图
在表单操作中使用route()方法而不是URL::to()方法提供路由名称:
<form class="sisform" role="form" method="POST" action="{{ route('airborne.create', $id) }}">https://stackoverflow.com/questions/53674329
复制相似问题