此路由不支持 PUT 方法。支持的方法:GET、HEAD、POST Laravel 6

我正在使用 Laravel 6 制作编辑表单。显然,这是一个普遍的问题,我在这里查找了如何解决它,我尝试以 5 种方式放置隐藏的 csrf 字段,并且每次运行时都出现相同的错误,所以 IDK 如果这些解决方案已被 Laravel 6 或我弃用我做错了什么。


编辑刀片.php


<form method="POST" action="/posts/{{$post->edit}}" enctype="multipart/form-data">

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

    <input type="hidden" name="_token" value="{{ csrf_token() }}">

    <div class="form-group">

        <label for="exampleFormControlInput1">Email address</label>

        <input type="email" name="email" value="{{ $post->email }}" class="form-control"

               id="exampleFormControlInput1">

    </div>

    <div class="form-group">

        <label for="exampleFormControlInput1">Name</label>

        <input type="text" name="name" value="{{ $post->name }}" class="form-control"

               id="exampleFormControlInput2" placeholder="Name">

    </div>

    <label for="exampleFormControlInput1">Image</label>

    <div class="form-group row">

        <div class="col-sm-2">

            @if($post->image)

                <img class="img-fluid card-img-top" src="/images/{{ $post->image }}"/>

            @endif

        </div>

        <input type="file" name="image" value="{{ $post->image }}"

               id="exampleFormControlInput3">

    </div>

    <button type="submit" class="btn btn-primary">Submit</button>

</form>

PostsController.php


    public function edit(Post $post)

    {

        return view ('posts.edit', compact('post'));

    }


    /**

     * Update the specified resource in storage.

     *

     * @param  \Illuminate\Http\Request  $request

     * @param  int  $id

     * @return \Illuminate\Http\Response

     */


我的路线,以防万一


Route::resource('posts', 'PostsController');

这些是我尝试编写 csrf 字段的其他方式。


方式一:


{{ csrf_field() }}

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

方式二:


@csrf_field

{{ method_field('PUT') }}

方式3:


@csrf

{{ method_field('PATCH') }}

方式四:


@csrf

@method('PUT')

所有这些都导致我收到相同的错误消息。


汪汪一只猫
浏览 244回答 1
1回答

撒科打诨

尝试替换这个:<form&nbsp;method="POST"&nbsp;action="/posts/{{$post->edit}}"有了这个 :<form&nbsp;method="POST"&nbsp;action="{{&nbsp;route('posts.update',&nbsp;[$post->id])&nbsp;}}"我认为您正在尝试在没有任何参数的情况下在 /posts/ 路由上发布,因为 $post->edit 可能不会返回帖子的 id :)
打开App,查看更多内容
随时随地看视频慕课网APP