我目前是Laravel的新人,并试图开发我的第一个项目。我在开发过程中将数据插入数据库时出现MethodNotAllowedHttpException in RouteCollection.php line 218
错误。我搜索过谷歌和谷歌解决方案但非解决方案的Stackoverflow与我当前的问题有关,其中一些对于这个简单的问题来说太复杂了(我想是这样......)。
我的表单在我的核对表页面中: -
<form action="{{url('addchecklist')}}" method="POST">
{{ csrf_field() }}
<div class="row">
<div class="col-sm-12">
<div class="text-left">
<input type="hidden" name="schmFK" value="{{$id}}">
<div class="col-sm-6">
<h4>
<label>Section</label>
<select class="selectpicker form-control" data-live-search="true" name="sctionPK">
<option selected>Select the Section</option>
@foreach ($sction as $key=>$slct1)
<option value="{{$slct1->ssctionPK}}">{{strtoupper($slct1->ssctionName)}}</option>
@endforeach
</select>
</h4>
</div>
<div class="col-sm-2">
<button type="button" data-toggle="modal" data-target=".bs-example-modal-lg" class="btn btn-primary btn-sm" style="margin-top:33px; padding-top:7px; padding-bottom:7px;">Add Section</button>
</div>
<div class="col-sm-4">
<h4>
<label>Severity</label>
<select class="selectpicker form-control" name="svrityPK">
<option selected>Select the Severity</option>
@foreach ($svrity as $key=>$slct2)
<option value="{{$slct2->severityPK}}">{{strtoupper($slct2->severityName)}}</option>
@endforeach
</select>
</h4>
</div>
<div class="col-sm-12">
<h4>
<label>Question</label>
<input class="form-control" type="text" placeholder="Question" name="question">
</h4>
</div>
<div class="col-sm-6">
@include('widgets.button', array('class'=>'primary btnaddstd', 'size'=>'lg', 'type'=>'submit', 'value'=>'Add Checklist'))
</div>
</div>
</div>
</div>
</form>
然后我有这条路由将表格中的数据插入数据库: -
Route::post('/addchecklist', function (Request $request){
// Create instance to store record
$scheme = new App\checklists;
$scheme->schmFK = $request->schmFK;
$scheme->schSectionFK = $request->sctionPK;
$scheme->severityFK = $request->svrityPK;
$scheme->clQuestion = $request->question;
$scheme->save(); // save the input
// Sort all records descending to retrieve the newest added record
$input = App\checklists::orderBy('cklistPK','desc')->first();
// Set search field variable default value of null
$src = isset($src) ? $src : null;
// Get Checklist reference from cklists_stddetails with the designated ID
$chkstd = App\Cklists_stddetail::where('cklistFK', $input->cklistPK)
->join('stddetails', 'stdDtlFK', '=', 'stddetails.sdtlPK')
->get();
// Get the newest stored record
$chcklst = App\checklists::where('cklistPK', $input->cklistPK)->firstOrFail();
// Get all data from table 'stddetails'
$stddetail = App\stddetails::all();
// Get all data from table 'standards'
$stndrd = App\standard::all();
// Get all data from table 'sections'
$sction = App\Section::all();
// Redirect to 'addref.blade' page with the newest added record
return redirect('addref/'.$input->cklistPK)
->with('src', $src)
->with('chkstd', $chkstd)
->with('id',$input->cklistPK)
->with('schmid', $request->schmFK)
->with('chcklst', $chcklst)
->with('stddetail', $stddetail)
->with('stndrd', $stndrd)
->with('sction', $sction);
});
我的情况是这样,我有一个表格供用户输入数据。然后,当保存数据时,它们将被重定向到该数据的页面以执行某些操作。 数据已成功保存在数据库中,但重定向到具有最新记录ID的指定页面(addref.blade)返回错误: -
但网址是我希望它去的地方(意味着网址是正确的): -
正如您所看到的,我发现网络的常用解决方案是: -
确保来自路线和表格的两种方法都是相同的,并且我的是: -
method="POST"
Route::post
确保网址路由可以识别表单的操作网址,并将其排除: -
<form action="{{url('addchecklist')}}" method="POST">
Route::post('/addchecklist', function (Request $request)
在表单中包含CSRF令牌字段,并将其包括在内: -
<form action="{{url('addchecklist')}}" method="POST">
{{ csrf_field() }}
我已经尝试过在网上提供的那些简单的解决方案,没有什么是有用的。我仍然想知道我还错过了什么,并希望这里的任何人都能协助解决我的问题。
答案 0 :(得分:0)
我认为错误在于您有一个尚未在routes or web.php
文件中注册的重定向。
示例重定向:
Route::post('/addchecklist', function (Request $request){
//some post process here...
return redirect('addref/'.$input->cklistPK)
->with('src', $src)
->with('chkstd', $chkstd)
->with('id',$input->cklistPK)
->with('schmid', $request->schmFK)
->with('chcklst', $chcklst)
->with('stddetail', $stddetail)
->with('stndrd', $stndrd)
->with('sction', $sction);
});
Route::get('addref/{id}', function(Request $request){
//show the blade.php with data
});
答案 1 :(得分:-1)
请你写一下:
URL( '/ addchecklist')
而不是:
URL( 'addchecklist')
然后print_r('in'); 死并检查你得到了什么。
Route::post('/addchecklist', function (Request $request){
print_r('in');
die;
});