为了账号安全,请及时绑定邮箱和手机立即绑定

store 路由不会将 POST 作为方法

store 路由不会将 POST 作为方法

PHP
侃侃尔雅 2021-11-13 19:05:04
我正在使用 Laravel 处理一个简单的博客项目,我试图将我的创建帖子表单传递的数据存储到我的商店控制器,但它不会接受 POST 方法。即使每当我列出我的路线时,我都会看到商店路线接受 post 方法。我使用了一个 get 方法并且有效。在我尝试上传图像之前,它开始告诉我图像文件必须是图像,即使它是图像。然后我发现图像没有被表单首先传递    {{ Form::open(['action' => 'PostsController@store', 'method'=> 'GET', 'enctype' => 'multipart/form-data']) }}    <div class="form-group">        {{Form::label('title', 'Title')}}        {{Form::text('title' , '' , ['class'=> 'form-control', 'placeholder'=> 'this is a title place holder'])}}    </div>    <div class="form-group">        {{Form::label('body', 'body')}}        {{Form::textarea('body' , '' , [ 'id' => 'article-ckeditor' , 'class'=> 'form-control', 'placeholder'=> 'body'])}}    </div>    <div class="form-group">        {{Form::file('cover_image')}}        <input type="hidden" name="_method" value="POST">    </div>    {{Form::submit('Submit',['class'=>"btn btn-info"])}}{{ Form::close() }}这是我的控制器    public function store(Request $request){    $this->validate($request, [        'title' => 'required',        'body' => 'required',        'cover_image'     ]);    //handle file upload    if($request->hasFile('cover_image')){        $image = $request->file('cover_image');        $filename = time() . '.' . $image->getClientOriginalExtension();        $location = public_path('storage/coverimages/' . $filename );        image::make($image)->resize(800, 400)->save($location);    }    else{        echo 'this is shit';        $filename = 'noimage.jpg';    }    //create post    $post = new Post;    $post->title = $request->input('title');    $post->body = $request->input('body');    $post->user_id = auth()->user()->id;    $post->cover_image = $filename;    $post->save();    return redirect('/posts')->with('success', 'Post created');}
查看完整描述

3 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

看这里

Form::open(['action' => 'PostsController@store', 'method'=> 'GET', 'enctype' => 'multipart/form-data'])

'method'=>'GET' 这样您的表单将作为 GET 请求而不是 POST 提交。


查看完整回答
反对 回复 2021-11-13
?
jeck猫

TA贡献1909条经验 获得超7个赞

在你的表单声明上试试这个 'files' => true


查看完整回答
反对 回复 2021-11-13
?
撒科打诨

TA贡献1934条经验 获得超2个赞

第一的

我注意到你正在使用

<input type="hidden" name="_method" value="POST">

您不需要使用表单方法欺骗。Laravel 中已经支持 Post 方法作为 HTTP 请求方法。检查laravel文档

第二

您正在提交表单,所以不要使用 get 方法,而是使用 Post


查看完整回答
反对 回复 2021-11-13
  • 3 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信