【发布时间】:2023-01-25 13:06:48
【问题描述】:
我在 Laravel 中使用Select2。我对 Select2 的搜索不起作用。
我的代码如下。
$('#restaurant').select2({
ajax: {
url: '{{url('/')}}/admin/vendor/get-restaurants',
data: function (params) {
return {
q: params.term, // search term
all:true,
page: params.page
};
},
processResults: function (data) {
return {
results: data
};
},
__port: function (params, success, failure) {
var $request = $.ajax(params);
$request.then(success);
$request.fail(failure);
return $request;
}
}
});
这是控制器的功能。
public function get_restaurants(Request $request){
$zone_ids = isset($request->zone_ids)?(count($request->zone_ids)>0?$request->zone_ids:[]):0;
$data = Restaurant::join('zones', 'zones.id', '=', 'restaurants.zone_id')
->when($zone_ids, function($query) use($zone_ids){
$query->whereIn('restaurants.zone_id', $zone_ids);
})
->where('restaurants.name', 'like', '%'.$request->q.'%')
->limit(8)
->orderBy('restaurants.name', 'ASC')
->get([DB::raw('restaurants.id as id, CONCAT(restaurants.name, " (", zones.name,")") as text')]);
if(isset($request->all))
{
$data[]=(object)['id'=>'all', 'text'=>'All'];
}
return response()->json($data);
}
如果我在输入搜索框中写任何东西,它就不起作用。
【问题讨论】:
-
该问题可能与 JavaScript、JQuery 或 CSS 有关。加载页面时,您可以分享浏览器控制台的屏幕截图吗
-
所以结果是用 Ajax 加载的,但它没有选择?你会在你的 get-restaurants 路线中过滤它吗?你也可以分享一下吗?
-
您是否在 Laravel
{{url('/')}}/admin/vendor/get-restaurants方法中实现了过滤? -
您需要在 Laravel 控制器中编写一个方法,该方法采用参数
q: params.term并根据该参数过滤记录 -
您是否使用邮递员或通过从浏览器调用 url 测试了
get_restaurants。有用吗?
标签: jquery laravel jquery-select2