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

如何在Laravel CRUD系统中实现管理员用户名搜索过滤功能

Laravel用户搜索功能实现方案

1. web.php路由配置

直接在routes/web.php文件中添加以下路由即可匹配你表单提交的/search地址:

// 建议放在管理员权限路由组内,避免未授权访问
Route::get('/search', [\App\Http\Controllers\UserController::class, 'search'])->middleware(['auth']);

如果你已经配置了管理员专属路由组,把这条路由放到组内即可,不需要重复加权限中间件。

2. 现有代码问题修复

你当前的代码还有几处问题会导致搜索功能异常,同步修改即可:

2.1 UserController的search方法修正

public function search(Request $request) {
    // 权限校验和index方法保持一致
    if(Gate::denies('logged-in')){
        dd('no acces');
    }
    if(Gate::denies('is-admin')){
        dd("adminnak kell lenned");
    }
    
    $search = $request->get('search');
    // 修正1:Eloquent模型直接调用where,不需要加table('users')
    // 修正2:分页追加搜索参数,避免翻页时搜索条件丢失
    $users = User::where('name', 'like', '%'.$search.'%')->paginate(10)->appends(['search' => $search]);
    // 修正3:返回视图和index一致,为admin.users.index而非admin
    return view('admin.users.index', compact('users', 'search'));
}

2.2 Blade模板修正

修改搜索框的input标签,默认填充当前搜索词,方便用户二次修改:

<input type="search" name="search" class="form-control" value="{{ $search ?? '' }}">

你当前的分页代码{{ $users->links() }}已经可以正常工作,因为Controller中已经通过appends方法绑定了搜索参数。

3. 可选优化:合并搜索逻辑到index方法(无需单独路由)

你可以直接把搜索逻辑整合到index方法中,不需要单独维护search路由和方法,修改后index方法代码如下:

public function index(Request $request)
{
    if(Gate::denies('logged-in')){
        dd('no acces');
    }
    if(Gate::denies('is-admin')){
        dd("adminnak kell lenned");
    }
    
    $search = $request->get('search');
    // 存在搜索词时才加过滤条件
    $users = User::when($search, function ($query) use ($search) {
        return $query->where('name', 'like', '%'.$search.'%');
    })->paginate(10)->appends(['search' => $search]);

    return view('admin.users.index', compact('users', 'search'));
}

修改后把Blade表单的提交地址改成用户列表路由即可:

<form action="{{ route('admin.users.index') }}" method="GET">

这种写法更简洁,也不用额外配置搜索路由。


内容的提问来源于stack exchange,提问作者Kis Gábor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:45:06