You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中links()分页GET请求不支持问题解决方案咨询

解决搜索分页时GET请求不被支持的问题

方案一:让路由同时支持GET和POST请求

直接修改路由配置,允许GET和POST两种方法访问搜索接口,这样分页的GET请求就能正常进入处理方法:

// 方式1:指定允许的方法
Route::match(['get', 'post'], 'search', ['as' => 'cat.search', 'uses' => 'CatController@search']);

// 方式2:允许所有HTTP方法(更简洁)
Route::any('search', ['as' => 'cat.search', 'uses' => 'CatController@search']);

接着调整控制器方法,确保分页链接带上搜索关键词(避免切换页码时丢失搜索条件):

public function search(Request $request)
{
    $search = $request->get('search');
    
    if ($request->filled('search')) {
        $cat = Tombe::where('name', 'like', "%{$search}%")
            ->orWhere('description', 'like', "%{$search}%")
            ->paginate(15);
            
        // 把搜索参数附加到分页链接中
        $cat->appends(['search' => $search]);
        
        if ($cat->isNotEmpty()) {
            return view('admin.cat.search', compact('cat'));
        } else {
            return back()->with('error', '未找到匹配结果');
        }
    } else {
        return back()->with('error', '请输入搜索关键词');
    }
}

方案二:POST提交后重定向到GET路由(更符合REST规范)

这种方式让用户提交搜索用POST,之后重定向到带搜索参数的GET路由,分页时用GET请求,搜索结果的URL可收藏分享:

  1. 添加两个路由:
// 处理POST提交的搜索请求
Route::post('search-submit', ['as' => 'cat.search.submit', 'uses' => 'CatController@searchSubmit']);
// 处理GET请求的搜索结果展示(含分页)
Route::get('search', ['as' => 'cat.search', 'uses' => 'CatController@search']);
  1. 新增并修改控制器方法:
// 处理POST提交,验证后重定向到GET路由
public function searchSubmit(Request $request)
{
    if (!$request->filled('search')) {
        return back()->with('error', '请输入搜索关键词');
    }
    return redirect()->route('cat.search', ['search' => $request->get('search')]);
}

// 处理GET请求,返回搜索结果及分页
public function search(Request $request)
{
    $search = $request->get('search');
    
    $cat = Tombe::where('name', 'like', "%{$search}%")
        ->orWhere('description', 'like', "%{$search}%")
        ->paginate(15);
        
    $cat->appends(['search' => $search]);
    
    if ($cat->isEmpty()) {
        return back()->with('error', '未找到匹配结果');
    }
    
    return view('admin.cat.search', compact('cat'));
}
  1. 前端表单更新提交地址:
<form action="{{ route('cat.search.submit') }}" method="POST">
    @csrf
    <input type="text" name="search" value="{{ request('search') }}">
    <button type="submit">搜索</button>
</form>

内容的提问来源于stack exchange,提问作者Dwi Simon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 12:24:53