Laravel Blade用户搜索栏无结果问题排查
问题排查与解决方法
核心问题是请求参数名不匹配:
你的Blade表单里搜索输入框的name属性是username,但控制器里判断的是$request->search,两者对不上,所以每次都会走到else分支返回"no_results"。
修复方案(二选一即可)
方案1:修改Blade表单的输入框名称
把input的name改成search,和控制器里的参数名对应:
<form action="{{route('search')}}" method="get"> <input type="search" name="search" id="" placeholder="Cerca" class="searchbar"> <button type="submit">Search</button> </form>
方案2:修改控制器的参数判断逻辑
把控制器里的$request->search改成$request->username,匹配表单的参数名:
function search_users(Request $request) { if ($request->username) { $searchUsers = User::where('username', 'LIKE', '%'. $request->username. '%')->get(); $data = [ "users" => $searchUsers ]; return view('dashboard.home', $data); } else { return response()->json("no_results"); } }
额外提示
- 可以用
$request->filled('参数名')替代直接判断变量,比如方案1里用$request->filled('search'),这样能更严谨地过滤空字符串的情况。 - 如果是AJAX请求,要确保前端发送的参数名和后端修改后的一致;如果是页面跳转,修改后就能正常返回带搜索结果的视图了。
内容的提问来源于stack exchange,提问作者Remì
相关产品推荐
相关产品推荐

