首页 > 解决方案 > 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>

标签: laravelsortingpostget

解决方案


当您单击<a>标签时,它会发出 GET 请求,因此您需要将路由从 POST 更改为 GET,同时返回视图作为对 post 方法的响应不是一个好主意,最好的解决方案是 GET 路由


推荐阅读