Thursday, 6 July 2023

Laravel fetch records dynamically in select box using select2 plugin

 1) add cdns 

<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />

<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>

2) define route 

 Route::get('administrator/department/fetch-users',[DepartmentController::class,'fetchUsers']);

3) Controller method 

protected function fetchUsers(Request $request)
    {
        try {
            $data = DB::table('admin_users')
                ->where('name', 'like', '%' . $request->search . '%')
                ->get();
            return response()->json($data);
        } catch (Exception $e) {
            return $e;
        }
    }

4) add select input 

<select class="js-example-data-ajax form-control">
    <option value="3620194" selected="selected">select2/select2</option>
</select>


5) jquery script

<script>

$('.js-example-data-ajax').select2({
            ajax: {
                url: "{{ url('administrator/department/fetch-users') }}",
                dataType:"json",
                delay:250,
                data: function(params) {
                    var query = {
                        search: params.term
                    };
                },
                processResults: function(data) {
                    return {
                        results: data.map(function(user){
                            return {
                                id: user.id,
                                text: user.name + ' (' + user.email + ')',
                            };
                        })
                    };
                },
                cache: true
            },
            minimumInputLength: 1
        });

</script>

No comments:

Post a Comment

Laravel Export data to csv

 use Illuminate\Http\Response; // Define a function to export data to CSV function exportToCSV($exportData, $columns) {     $filename = ...