gpt4 book ai didi

php - 使用 HTML 表单存储到资源(Laravel 5.8)

转载 作者:行者123 更新时间:2023-12-03 21:41:06 25 4
gpt4 key购买 nike

我正在创建一个允许用户创建博客文章的 laravel 应用程序。

我创建了一个 PostsController 作为具有如下存储功能的资源:

public function store(Request $request)
{
$this->validate($request, [
'title' => 'required',
'body' => 'required'
]);

return 123;
}

另外,我在 web.php 中添加了一条路由

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

如果我用 php artisan php artisan show:routes 列出路由,则列出 POST 方法:

enter image description here

HTML 表单如下所示:

<form action="PostsController@store" method="POST">        
<div class="form-group">
<label for="title">Title</label>
<input class="form-control" type="text" id="title">
</div>
<div class="form-group">
<label for="body">Body</label>
<textarea class="form-control" id="body" rows="3"></textarea>
</div>
<input type="submit" class="btn btn-primary">
</form>

当我提交表单时,我得到 MethodNotAllowedHttpException:

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

我以前使用 laravel 集合来处理表单。有一段时间没有在 laravel 中做任何工作,现在它似乎已被弃用( https://laravelcollective.com/ ),所以我求助于经典的 HTML 形式。我该如何解决这个问题?

最佳答案

您的操作在表单中不正确 - 您需要将操作指向路由的 URL,然后路由将选择方法,在本例中为“存储”方法。还可以添加 @csrf 以获取更多信息 CSRF Protection

<form action="{{ route('posts.store') }}" method="POST">
@csrf
<div class="form-group">
<label for="title">Title</label>
<input class="form-control" type="text" id="title">
</div>
<div class="form-group">
<label for="body">Body</label>
<textarea class="form-control" id="body" rows="3" name="body"></textarea>
</div>
<input type="submit" class="btn btn-primary">
</form>

关于php - 使用 HTML 表单存储到资源(Laravel 5.8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55019389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com