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)
您可以通过运行来获取所有应用程序路由和名称的列表
$ 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 文档。