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

Laravel搜索功能无错误提示却报404问题排查及低改动修复

Laravel搜索功能出现404错误排查与修复

我尝试在Laravel中从名为pegawai的数据表按名称搜索数据,但点击搜索后页面显示404 Not Found,无其他错误提示。以下是我的代码:

路由代码

Route::get('/pegawai/cari', 'PegawaiController@cari');

Pegawai控制器代码

public function cari(Request $request)
{
    // 捕获搜索数据
    $cari = $request->cari;

    // 根据搜索条件从pegawai表获取数据
    $pegawai = DB::table('pegawai')
        ->where('pegawai_nama', 'like', "%" . $cari . "%")
        ->paginate(10);

    // 将数据传递到index视图
    return view('index',['pegawai' => $pegawai]);
}

index视图代码

<form action="/pegawai/cari" method="GET">
    <input type="text" name="cari" placeholder="Cari Pegawai .." value="{{ old('cari') }}">
    <input type="submit" value="CARI">
</form>

请问我哪里出错了?如何在尽量少改动代码的情况下实现想要的搜索结果?


可能的错误原因及修复方案

1. 路由顺序冲突

Laravel路由按定义顺序匹配,若/pegawai/cari路由写在/pegawai/{id}这类通配符路由之后,请求会优先匹配通配符路由,把cari当作{id}参数,导致找不到对应处理方法,返回404。

修复:将Route::get('/pegawai/cari', 'PegawaiController@cari');移至所有/pegawai/*的动态路由之前。

2. 控制器命名空间错误(Laravel 8+)

Laravel 8及以上版本默认不再自动导入控制器命名空间,若路由中仅写'PegawaiController@cari',框架会找不到控制器,返回404。

修复:在路由文件顶部添加命名空间引用,改用类方法写法:

use App\Http\Controllers\PegawaiController;

Route::get('/pegawai/cari', [PegawaiController::class, 'cari']);

3. 路由缓存未更新

若之前执行过php artisan route:cache,修改路由后未清除缓存,旧路由规则仍会生效,新路由无法被识别。

修复:执行命令清除路由缓存:

php artisan route:clear

最小改动修复建议

优先调整路由顺序,确保搜索路由在动态路由之前;若使用Laravel 8+,更新路由写法为类引用格式,这两步改动最小,能解决绝大多数404问题。

内容的提问来源于stack exchange,提问作者J3ubble Marsyal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:45:33