早安,
我真的是laravel的新手,并乐于使用它,直到遇到一个确实让我痛苦的编程问题为止,这是更新方法期间的验证重定向。这给我一个错误
Symfony \组件\ HttpKernel \ Exception \ MethodNotAllowedHttpException 没有消息
程序是关于拒绝购买请求的,我希望拒绝原因写一个便条,该字段不能为空,我可以验证它,但是我的问题是重定向期间的错误。
这是deny.blade.php的表格
{!!Form::open(['action'=>['prInitialApprovalController@update',$post->id],',method'=>'POST', 'class'=>'pull-right'])!!}
<div class="form-group">
{{Form::label('denyNote','Deny Note(Please fill this up for it is required)')}}
{{Form::textarea('denyNote','', [ 'id'=>'article-ckeditor','class'=>'form-control','placeholder'=>'Please fill deny note for it is required'])}}
</div>
{{Form::hidden('denied','11', ['class'=>'form-control'])}}
{{Form::hidden('_method','PUT')}}
{{Form::submit('Deny', ['class'=>'btn btn-primary'])}}
<a href="/pr_approval" class="btn btn-dark">Return</a>
{!!Form::close()!!}
这是控制器上的更新方法
public function update(Request $request, $id)
{
//update category
$post = prModel::find($id);
if($request->input('denied') == '11'){
$validator = Validator::make($request->all(), [
'denyNote' => 'required',
]);
if ($validator->fails()) {
return redirect()->action(
'prInitialApprovalController@deny', $id
)->withErrors($validator);
}else{
$post->pr_status = '11';
$post->deny_reason = $request->input('denyNote');
$post->save();
return redirect('/pr_approval')->with('success', 'Purchase Request Denied');
}
}
}
这是我的网络路线
Route::put('pr_approval/{id}/deny', 'prInitialApprovalController@deny');
Route:: Resource('/pr_approval', 'prInitialApprovalController');
Auth::routes();
这是路线列表
请帮忙,我确实在类似的日子里一直坚持下去。我正在使用laravel 5.6
谢谢
答案 0 :(得分:0)
尝试将表格与模型绑定一起使用:
{{ Form::model($post, ['route' => ['pr_approval.update', $post->id]]) }}
// Your Html
{{Form::close}}
此外,删除此行。
{{Form::hidden('_method','PUT')}}
祝你好运!
答案 1 :(得分:0)
尝试使用其中任何一种。
{!!Form::open(['action'=>['prInitialApprovalController@update',$post->id],',method'=>'PUT', 'class'=>'pull-right'])!!}
OR
在您的表单中添加此字段:
<input name="_method" type="hidden" value="PUT">
OR
您也可以这样:
{!!Form::open(['action'=>['prInitialApprovalController@update',$post->id],',method'=>'POST', 'class'=>'pull-right'])!!}
{{ method_field('PUT') }}
删除此行:
{{Form::hidden('_method','PUT')}}
答案 2 :(得分:0)
您的csrf令牌实际上有问题。
提交任何表单时,您都需要 @csrf 令牌。 laravel 5.6
对使用表单进行数据托管有一些要求。
@foreach ($errors->all() as $error)
<div class="alert alert-danger " style="text-align:center;">
<a href="#" class="close" data-dismiss="alert">×</a>
<strong>Error!</strong> {{ $error }}
</div>
@endforeach //for error
{!!Form::open(['action'=>['prInitialApprovalController@update',$post->id],',method'=>'POST', 'class'=>'pull-right'])!!}
@csrf
<div class="form-group">
{{Form::label('denyNote','Deny Note(Please fill this up for it is required)')}}
{{Form::textarea('denyNote','', [ 'id'=>'article-ckeditor','class'=>'form-control','placeholder'=>'Please fill deny note for it is required'])}}
</div>
{{Form::hidden('denied','11', ['class'=>'form-control'])}}
{{Form::hidden('_method','PUT')}}
{{Form::submit('Deny', ['class'=>'btn btn-primary'])}}
<input type="submit value="Return" href="/pr_approval" class="btn btn-dark">
{!!Form::close()!!}
在@csrf令牌之后,某些情况下,我们还需要您的令牌值/
<div style="display:none"><input type="hidden" value="af22b8f3a43fe074cfa5daf43f6250eba767f1bc" name="YII_CSRF_TOKEN" /></div>
也可以使用
<form action="{{ URL::to('/Registration_store') }} method="POST" >
和 web.php路由是
Route::post('/Registration_store','controller_name@function_name');
您不需要此代码laravel自动抛出错误预览页面。
if ($validator->fails()) {
return redirect()->action(
'prInitialApprovalController@deny', $id
)->withErrors($validator);
}