【发布时间】:2020-06-11 04:44:15
【问题描述】:
我是 laravel 的新手..有点卡在这个地方。为此尝试了许多解决方案,但尚未奏效,有类似的问题但大多数未解决,或尚未发布适当的明显解决方案(来自 google,stackoverflow ..etc)
我已经定义了一条自定义路线
Route::post('/ComplaintGenerate', 'ComplaintsController@generate');
每当我使用“POST”方法提交视图时
<form action="/ComplaintGenerate" method="POST" >
在我的投诉控制器中没有任何验证规则,一切正常,我可以保存数据。但是当我通过请求或直接进行验证时,它会抛出错误 Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException 此路由不支持 GET 方法。支持的方法:POST。
如果我删除验证一切正常。我也尝试过使用 GET 方法,但仍然有效。 非常感谢您的建议。
Web.route
Route::middleware(['auth'])->group(function(){
Route::post('/Complaint', 'ComplaintsController@find');
Route::post('/ComplaintGenerate', 'ComplaintsController@generate');
Route::post('/Complaint/{Complaint}', 'ComplaintsController@save_customer');
Route::resource('Complaints', 'ComplaintsController');
Route::resource('Occupancies', 'OccupanciesController');
Route::resource('Customers', 'CustomersController');
Route::resource('Services', 'ServiceController');
Route::resource('ServiceTeams', 'ServiceTeamController');
Route::get('/home', 'HomeController@index')->name('home');});
我的控制器:
public function generate(GenerateInitialComplaintRequest $request)
{
$complaint = Complaint::find($request->complaint_id);
$complaint->update([
'complaint_date'=>$request->complaint_date,
'complaint_description'=>$request->complaint_description,
]);
return redirect(route('Complaints.index')->with('complaint', Complaint::all()));
}
我的观点:
<div class="container my-5">
<div class="col d-flex justify-content-center my-4">
<div class="card">
<div class="card-header">
<form action="/ComplaintGenerate" method="POST" >
@csrf
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="form-row">
<div class="form-group col-md-6">
<label for="complaint_id">Complaint Number</label>
<input type="text" class="form-control" id="complaint_id" name="complaint_id" value="{{$complaint->id}}" readonly >
</div>
<div class="form-group col-md-6">
<label for="complaint_date">Complaint Date</label>
<input type="text" class="form-control" id="complaint_date" name="complaint_date">
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12">
<label for="complaint_description">Complaint Description</label>
<textarea class="form-control" id="complaint_description" name="complaint_description" rows="5"></textarea>
</div>
</div>
<div class="text-center">
<button type="submit" class="btn btn-primary">Save</button>
</div>
</form>
</div>
</div>
</div>
【问题讨论】:
-
当它抛出错误时,检查浏览器中的url。
-
并显示有问题的网址
-
当我检查表单验证127.0.0.1:8000/Complaint/2 时,url 保持与以前的路由相同,并出现上述错误,当我填写所有详细信息时,我得到127.0.0.1:8000/ComplaintGenerate
-
根据您提供的相关路线:Route::post('/Complaint/{Complaint}', 'ComplaintsController@save_customer');
-
是post请求。 Laravel 走这条路。所以这就是你得到错误的原因。
标签: php laravel validation laravel-5 eloquent