Laravel 8 表单更新数据库

Tho*_*ead 2 html php forms laravel

我正在 Laravel 8 中创建一个具有 CRUD 功能的简单博客网站。我在使用已弃用的 Laravel 表单之前已经完成了此操作,但现在尝试使用 HTML 表单来完成此操作。
但是,我在网站的更新部分遇到一些问题。我有一个名为 BlogsController 的控制器,可以调用此函数来更新数据库中的博客,当用户提交要更新的表单时应该调用该函数。

BlogsController更新功能

public function update(Request $request, $id)
    {
        $this->validate($request, [
            'title' => 'required',
            'body' => 'required',
            'category' => 'required',
            'description' => 'required',    
            'read_time' => 'required'        
        ]);

        $blog = Blog::find($id);        
        $blog->title = $request->input('title');        
        $blog->body = $request->input('body'); 
        $blog->category = $request->input('category');
        $blog->description = $request->input('description');
        $blog->read_time = $request->input('read_time');     
        $blog->user_id = auth()->user()->id;
        $blog->save();

        return redirect('/dashboard')->with('success', 'Blog Updated');
    }
Run Code Online (Sandbox Code Playgroud)

该表格需要针对什么操作?

更新表格顶部

<form method="POST" action="update">
Run Code Online (Sandbox Code Playgroud)

web.php 中的路由

Route::resource('blog', 'App\Http\Controllers\BlogsController');
Run Code Online (Sandbox Code Playgroud)

以 Laravel 形式实现

{!! Form::open(['action' => ['App\Http\Controllers\BlogsController@update', $blog->id], 'method' => 'POST']) !!}
Run Code Online (Sandbox Code Playgroud)

cod*_*dge 5

您可以通过运行来获取所有应用程序路由和名称的列表

$ php artisan route:list
Run Code Online (Sandbox Code Playgroud)

对于您的博客更新路线,您应该使用

<form method="POST" action="{{ route('blog.update', ['blog' => $blog]) }}">
  @method('PATCH')
</form>
Run Code Online (Sandbox Code Playgroud)

在你的模板中。

确保使用csrf正确设置了表单中的令牌@csrf,请参阅 Laravel 文档。