laravel - Laravel 6 中的路由不支持 POST 方法
问题描述
我正在 Laravel 6 中构建一个讨论表单。我使用的路由是 POST 方法,我在route:list
. 我收到以下错误,为什么?
此路由不支持 POST 方法。支持的方法:GET、HEAD、PUT、PATCH、DELETE
看法
<form action="{{ route('replies.store', $discussion->slug) }}" method="post">
@csrf
<input type="hidden" name="contents" id="contents">
<trix-editor input="contents"></trix-editor>
<button type="submit" class="btn btn-success btn-sm my-2">
Add Reply
</button>
</form>
路线
Route::resource('discussions/{discussion}/replies', 'RepliesController');
控制器
public function store(CreateReplyRequest $request, Discussion $discussion)
{
auth()->user()->replies()->create([
'contents' => $request->contents,
'discussion_id' => $discussion->id
]);
session()->flash('success', 'Reply Added.');
return redirect()->back();
}
解决方案
您传递了一个讨论对象作为参数,以便将 user_id 存储在一个数组中。我认为这不是存储数据的好习惯。
您可能会注意到您的 routes/web.php 和您的 html 操作都很好并且可以使用 post 但您收到:“Laravel 6 中的路由不支持 POST 方法”。这是运行时错误。当您的逻辑对编译器没有意义时,这可能会发生。
以下步骤可能会帮助您完成您想要的:
1. Eloquent 模型(App\Discussion)
protected $fillable = ['contents'];
public function user(){
return $this->belongsTo('App\User');
}
2. Eloquent 模型(App\User)
public function discussions(){
return $this->hasMany('App\Discussion');
}
3.控制器
use App\Discussion;
public function store(Request $request){
//validate data
$this->validate($request, [
'contents' => 'required'
]);
//get mass assignable data from the request
$discussion = $request->all();
//store discussion data using discussion object.
Discussion::create($discussion);
session()->flash('success', 'Reply Added.');
return redirect()->back();
}
4. 路由(routes/web.php)
Route::post('/replies/store', 'RepliesController@store')->name('replies.store');
5.查看
<form action="{{ route('replies.store') }}" method="post">
@csrf
<input type="hidden" name="contents" id="contents">
<trix-editor input="contents"></trix-editor>
<button type="submit" class="btn btn-success btn-sm my-2">
Add Reply
</button>
</form>
推荐阅读
- c++ - windows中ffmpeg的av_read_frame总是返回随机packet.stream_index
- java - 在本地微服务之间交换纯文本密码是一种好的编程习惯吗?
- asp.net-core - 部署到 IIS 时,String.Format 更改为 EU 格式
- java - 类未传递给 ClassFileTransformer
- class - 关于两个不同类实例的 AS3 hitTest 逻辑
- python - 如何在 vps 上使用 pyautogui?
- php - 在 laravel 应用程序中的所有错误/异常的维护视图页面下显示站点
- angular - 等价于 Angular 中的 asp-for 和 asp-validation-for
- c++ - C++ 中的递归和模板
- ssis - GETDATE() 和通过侦听器连接的多个服务器