laravel - laravel 6 调用 post 路由返回同一页面进行排序表
问题描述
我正在尝试创建一个用户可以排序的表
我创建了以下两条路线
route::get('/manager', 'Manager\DeadlineController@index')->middleware(['auth', 'auth.manager'])->name('manager.index');
route::post('/manager/{name_id}', 'Manager\DeadlineController@sortByName')->middleware(['auth', 'auth.manager'])->name('manager.sortByName');
从我的 php 工匠路线:列表
| | GET|HEAD | manager | manager.index | App\Http\Controllers\Manager\DeadlineController@index | web,auth,auth.manager |
| | POST | manager/{name_id} | manager.sortByName | App\Http\Controllers\Manager\DeadlineController@sortByName | web,auth,auth.manager |
并按如下方式设置我的控制器
public function index()
{
return view('deadline.index')
->with([
'modules' => Module::all(),
'name_id' => 0
]);
}
public function sortByName($name_id){
if($name_id == 0){
$sortedModule = Module::orderBy('name', 'DESC')->get();
}
else{
$sortedModule = Module::orderBy('name', 'ASC')->get();
}
return view('deadline.index')
->with([
'modules' => $sortedModule,
'name_id' => 1
]);
}
在我看来,我使用以下链接进行排序
<th scope="col"><a href="{{ route('manager.sortByName', $name_id) }}">NAME</a></th>
但是当我在我的视图中使用此链接时,我不知何故被重定向到我的 GET 路线,因为我收到以下错误
The GET method is not supported for this route. Supported methods: POST.
我错过了什么或做错了什么?任何帮助或提示将不胜感激。请询问我是否需要提供更多详细信息
更新
我将视图中的链接更改为带有提交按钮的表单标签,现在它可以工作了
<th scope="col">
<form action="{{ route('manager.sortByName', $name_id) }}" method="POST">
@csrf
<button type="submit">NAAM</button>
</form>
</th>
解决方案
当您单击<a>
标签时,它会发出 GET 请求,因此您需要将路由从 POST 更改为 GET,同时返回视图作为对 post 方法的响应不是一个好主意,最好的解决方案是 GET 路由