更新错误 - Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException没有消息

时间:2018-03-25 16:45:37

标签: php laravel

我有一个表格帖子,其中有两列“share_inst”,“share_tw”为tinyints,默认情况下为“0”。

我有一个表单允许帖子的管理员选择我们是否希望在所有网站中共享帖子,或只是一个或没有。但它不起作用。

当我选择网站并点击“更新”时,我收到错误:

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
No message

同样在表单中,如果在数据库中的列“share_inst”和“share_tw”和“1”,则不会显示复选框。

你知道错误在哪里吗?

表格

<form method="post" {{route('posts.share.update', ['post_id' => $post->id])}}>

            <div class="form-group">
                <label for="inputName">
                   Select which sites the post can be shared</label>
                <div class="form-check">
                    <input class="form-check-input" type="checkbox" name="share_tw" id="share_tw" value="share_tw"
                            {{ $post->share_tw == 0 ? 'checked' : '' }} {{ $post->share_tw == 0 ? 'checked' : '' }}>
                    <label class="form-check-label" for="exampleRadios1">
                        Twiiter
                    </label>
                </div>
                <div class="form-check">
                    <input class="form-check-input" type="checkbox" name="share_inst" id="share_inst" value="share_inst"
                            {{ $post->share_inst == 1 ? 'checked' : '' }} {{ $post->share_inst == 1 ? 'checked' : '' }}>
                    <label class="form-check-label" for="exampleRadios1">
                        Instagram
                    </label>
                </div>
            </div>
            <input type="submit" value="Update"/>
        </form>

更新方法:

 public function update(Request $request, $id)
    {
        $post = Post::find($id);
        $post->share_tw = $request->share_tw;
        $post->share_ins = $request->share_ins;
        $post->save();
        return redirect()->back();
    }

路线:

// update shared
Route::get('post/edit/{id}/share',    [ 'uses' => 'ShareController@edit', 'as'=>'posts.share.edit']);
Route::post('post/update/{id}/share', [ 'uses' => 'ShareController@update', 'as'=>'posts.share.update']);

2 个答案:

答案 0 :(得分:0)

docs添加method_field('PATCH')到表单

<form method="POST" action="{{route('posts.share.update', ['post_id' => $post])}}">
  {{csrf_field()}}
  {{ method_field('PATCH') }}
</form>

答案 1 :(得分:0)

你能试试吗?

Route::put('post/update/{id}/share', [ 'uses' => 'ShareController@update', 'as'=>'posts.share.update']);