Laravel文本输入框点击搜索无响应问题排查
问题排查与修复方案
我帮你检查了代码,发现两个核心问题导致点击搜索后没有任何反应:
1. 控制器未正确注入Request实例
你的playersPerGame方法里直接使用了$request变量,但没有在方法参数中声明注入Illuminate\Http\Request类,这会导致PHP无法识别$request对象,自然无法读取搜索框提交的game_name参数,筛选逻辑根本不会触发。
2. 分页参数映射错误
你在$render数组里写的是$render['name']=$request->name;,但表单里的搜索字段名是game_name,这会导致分页时丢失搜索条件——即使筛选成功,切换页码也会直接回到全量数据。
修正后的控制器代码
use Illuminate\Http\Request; // 确保顶部引入Request类 public function playersPerGame(Request $request) { // 注入Request实例 $data['title'] = 'Games Report'; $games= GamePoint::select('game_point.game_name','game_point.description','game_point.point_assigned','game_point.created_at'); $render=[]; if($request->filled('game_name')) { // 用filled()替代isset更严谨,判断字段是否存在且非空 $games=$games->where('game_name','like','%'.$request->game_name.'%'); $render['game_name']=$request->game_name; // 修正参数名和表单字段一致 } $games= $games->paginate(15); $games= $games->appends($render); $data['games'] = $games; return view('report.playersPerGame',$data); }
额外排查建议
- 开启PHP错误提示或者查看Laravel日志(
storage/logs/laravel.log),这样以后遇到类似问题能快速定位错误原因。 - 可以在浏览器按F12打开开发者工具,切换到Network标签,点击搜索按钮后查看请求的参数是否正确发送到后端。
内容的提问来源于stack exchange,提问作者user11352561
相关产品推荐
相关产品推荐

