【问题标题】:Select2 Search Input box TypeSelect2 搜索输入框类型
【发布时间】: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


【解决方案1】:

我不知道你的代码有什么问题,但我会告诉你我的方法。

这非常简单,只需在 select 中循环遍历 resturants 变量,然后在脚本中初始化 select2。

在刀片文件中:

<select id="restaurant">
   @foreach($resturants as $resturant)
      <option value="{{ $resturant->id }}">{{ $resturant->name }}</option>
   @endforeach
</select>

在脚本中

$('#restaurant').select2();

【讨论】:

  • 谢谢@Mohammed_40。你可以查看我的截图。如果我输入任何值,则值不会排序。
【解决方案2】:

你需要像这样以 select2 的形式给出返回响应

foreach ($restaurants as $restaurant) {
            $response[] = array(
                "id" => $restaurant->id,
                "text" => $restaurant->name
            );
        }
        return response()->json($response);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 2018-03-14
    • 2012-07-20
    • 1970-01-01
    相关资源
    最近更新 更多