laravel 6调用发布路由以返回到同一页进行排序表

问题描述 投票:0回答:1

我正在尝试创建一个用户可以排序的表

我创建了以下两条路线

 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 artisan route:list

|        | 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>
laravel sorting post get
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.