实现搜索地图功能报Undefined variable: req错误,代码如何修改?
问题解决方法
错误原因
这个Undefined variable: req报错是因为你在Blade模板中直接调用了$req变量,但渲染该模板的控制器没有将Request实例$req传递到视图层。
调整方案
方案1:使用Laravel全局request()助手(推荐,无需修改控制器)
直接将onRegionClick回调中生成路由的代码替换为以下内容,不需要额外传参就能获取请求参数:
var url = '{{ route("search", ["q" => request()->input("q", ""), "province" => ":id"]) }}';
这里加了第二个参数""作为兜底,避免请求中没有q参数时出现报错。
方案2:控制器传递$req变量到视图
如果你坚持要使用$req变量,需要在渲染该模板的控制器方法中补充传参:
use Illuminate\Http\Request; public function 你的方法名(Request $req) { // 你的原有业务逻辑 return view('你的视图名称', [ // 你原有传递的参数,比如 $total_search_query 'total_search_query' => $total_search_query, 'req' => $req // 新增这行把Request实例传到视图 ]); }
额外优化建议
你现有代码的onRegionTipShow回调中,如果array.find没有匹配到对应地区的数据,会返回undefined,直接取count属性会触发JS报错,建议修改为兜底写法:
var a = array.find(a => a.name === myTrim(regionName))?.count || 0;
内容的提问来源于stack exchange,提问作者ocanrivera
相关产品推荐
相关产品推荐

