嗨,我是laravel的新手,我正在做laravel中的一个项目,因为当验证失败时,我正在获取方法不允许异常,因为验证成功它运行良好。我认为问题是验证失败意味着页面将被重定向到以前的位置(即编辑表单)作为获取请求所以我的问题是我的编辑页面是路线中的帖子方法你可以看看我的编辑页面的路线下面
路线:
Route::get('leavelist','LeaveController@index');
Route::post('leaveedit','LeaveController@edit');
Route::post('leaveupdate','LeaveController@update');
Route::post('leaveview','LeaveController@view');
LeaveController:
.......
public function update(Request $request){
$this->validate($request,[ 'request_type'=>'required',
'description'=>'required',
'from'=>'required',
'to' => 'required',
'requested_to' => 'required',
'status' => 'required'
]);
$leave_update = LeaveModel::find($request->id);
$leave_update->request_type=$request->request_type;
$leave_update->requested_person=Auth::user()->id;
$leave_update->requested_to=$request->requested_to;
$leave_update->from=date('Y-m-d h:m:00',strtotime($request->from));
$leave_update->to=date('Y-m-d h:m:00',strtotime($request->to));
$leave_update->description=$request->description;
$leave_update->status=$request->status;
$leave_update->updated_by=Auth::user()->id;
if($leave_update->save()){
//have to change this later
return redirect('leavelist')->with('message',
'<br><div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>
<strong>Success!</strong> Leave request Updated succesfully... </div>'
);
}else{
//have to change this later
return redirect('leavelist')->with('message',
'<br><div class="alert alert-warning alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button>
<strong>Warning!</strong> Leave request Updated failed... </div>'
);
}
}
......
列出包含隐藏形式的页面:
<table class="table table-striped table-bordered table-hover" id="sample_2">
<thead>
<tr>
<th> S.no</th>
<th> Name</th>
<th> Department</th>
<th> Request Type</th>
<th> Request To</th>
<th> Responded Person</th>
<th> From</th>
<th> To</th>
<th> Status</th>
<th> Action</th>
</tr>
</thead>
<tbody>
<?php $i=1; ?>
@forelse ($leave_list as $key=>$value)
<tr>
<td> {{ $i }} </td>
<td> {{ $value->requested_person_name }} </td>
<td> {{ $value->dep_name }} </td>
<td> {{ $value->request_type_name }} </td>
<td> {{ $value->requested_to_person }} </td>
<td> {{ $value->responded_person_name }} </td>
<td> {{ date('d-m-Y h:m',strtotime($value->from)) }} </td>
<td> {{ date('d-m-Y h:m',strtotime($value->to)) }} </td>
<td> {{ $value->status }} </td>
<td>
<a href="#" data="{{ $value->id }}" onclick="event.preventDefault(); val = this.getAttribute('data'); document.getElementById('edit_unique_id').value=val; document.getElementById('edit-form').submit(); " class="btn btn-circle btn-icon-only green">
<i class="fa fa-edit"></i>
</a>
<a href="#" data="{{ $value->id }}" onclick="event.preventDefault(); val = this.getAttribute('data'); document.getElementById('view_unique_id').value=val; document.getElementById('view-form').submit(); "class="btn btn-circle btn-icon-only blue">
<i class="fa fa-file-o"></i>
</a>
</td>
</tr>
<?php $i++; ?>
@empty
@endforelse
</tbody>
</table>
<form id="edit-form" action="{{ url('leaveedit') }}" method="POST" style="display: none;">
{{ csrf_field() }}
<input type="hidden" name="id" id="edit_unique_id" value="" />
</form>
对于上面的输入值,由jquery设置和提交。
功能说明:
首先我正在休假模块中工作,我在列表页面列出了应用请假请求,其中有一个编辑按钮来编辑请假请求。当我点击编辑按钮时,我抓住了特定的唯一行ID并使用jquery提交表单,它的路由是post方法Route::post('leaveedit','LeaveController@edit');
然后我的编辑表单加载正确的值,当我提交编辑表单以更新路由Route::post('leaveupdate','LeaveController@update');
在更新功能验证通过它的工作完美如果验证失败它将重定向到上一页,这是编辑页面所以问题在这里,而我正在method not allowed exception
我希望我转达我的问题如果你有任何澄清问我评论我会回复你。请指导我解决这个问题。
注意:同样的方法在几个飞蛾现在已经完成了,现在只有它在我以前开发的所有模块中抛出这个错误。我不知道为什么。我的laravel版本是Laravel Framework version 5.3.28
答案 0 :(得分:1)
无法使用post方法重定向。最好通过json响应来获取错误消息。
$validator = Validator::make($request->all(), [
'request_type'=>'required',
'description'=>'required',
'from'=>'required',
'to' => 'required',
'requested_to' => 'required',
'status' => 'required
]);
if ($validator->fails()) {
return response()->json($validator->messages(), 200);
}
....