1. Create Authentication In Laravel 5.8
  2. Create Cart Laravel 5.4 +VueJS
  3. Create Multiple Subcategories in Laravel 5.8
  4. Create Template Vuejs and Laravel 5.4
  5. Giới thiệu Laravel 5.4
  6. Hướng dẫn cài đặt laravel 5.4 phần 1
  7. Hướng dẫn cài đặt laravel 5.4 phần 2
  8. Passing data from Laravel to Vue
  9. Multiple Subcategories in Laravel 5.8 + Vue
  10. Login State in Angular 7 + Laravel 5.4
  11. Laravel 5.7 + Vue SPA
  12. Send Mail using Laravel 5.4 + VueJS
  13. SHOW DATA VUEJS IN TEMPLATE BLADE LARAVEL
  14. Xây dụng chức năng Register+ Login bằng Laravel 5.4 + VueJS
  15. Xác thực API bằng OAuth 2 với Laravel 5.4 Passport
  16. Tạo ứng dụng Laravel 5.4 kết hợp với Vuejs
  17. Create Multiple Comment in Laravel 5.8
  18. Filemanager in Laravel 5.8
  19. Connecting Multiple Databases in Laravel 5.8
  20. Laravel Redirect HTTP to HTTPS via .htaccess
  21. User Roles and Permissions in Laravel 5.8
  22. Export Excel using maatwebsite/excel in Laravel 5.8
  23. Show All Image from public folder using Laravel 5.8
  24. Multiple Image Upload using Ajax with Laravel 5.8
  25. Form Request Validation in Laravel 5.8
  26. Send Email using Queue in Laravel 5.8
  27. Ckeditor and Ckfinder in Laravel 5.8 + Vue.js
  28. Add a Marker to Google Map in Laravel 5.8
  29. Pagination for search results laravel 5.8

Pagination for search results laravel 5.8

min read

Tìm kiếm thông tin trên website là một chức năng mà website thường dùng đến, với mục đích giúp cho người dùng dễ tìm thấy thông tin nhất. Nay mình sẽ tạo một Form Search trong Laravel 5.8, sau đó lấy kết quả trả  ra và pagination (phân trang) nó.

# Setup Laravel 5.8 version

composer create-project --prefer-dist laravel/laravel blog "5.8.*"

# Create Controller in Laravel 

php artisan make:controller SearchController --resource

Sau khi chạy câu lệnh trên, ta tạo được file mới SearchController.php trong thư mục App/Http/Controllers, bạn mở file lên và cấu hình như sau:

public function index(Request $request)
    {
        $search =  $request->input('q');
        if($search!=""){
            $users = User::where(function ($query) use ($search){
                $query->where('name', 'like', '%'.$search.'%')
                    ->orWhere('email', 'like', '%'.$search.'%');
            })
            ->paginate(2);
            $users->appends(['q' => $search]);
        }
        else{
            $users = User::paginate(2);
        }
        return View('pages.search')->with('data',$users);
        //
    }

Bạn chỉnh sửa lại function index() như bên trên, đầu tiên mình kiểm trả Request, xem người dùng có nhập vào form search laravel của mình thiết lập không.
Nếu người dùng chưa nhập vào form search, thì ta sẽ lấy tất cả dữ liệu và hiển thị ra khung nhìn view
Trường hợp nếu người dùng đã nhập vào form search thì ta sử dụng $search =  $request->input('q'); để lấy giá trị người dùng search 
Bạn thấy $users->appends(['q' => $search]);  đoạn code trên, giúp ta chuyển trang page sẽ đính kèm theo từ khóa search của người dùng
Sau đó dùng return View('pages.search')->with('data',$users); ta sẽ gửi data đến view blade, để hiện thị dữ liệu

# Create View Blade in Laravel 

Vào resources/views/pages tạo file search.blade.php 

@extends('layouts.app')
@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-10">
            <form action="">
                <h2>Search content in database using Laravel</h2>
                <div class="form-group">
                    <input type="text" name="q" placeholder="Search...!" class="form-control"/>
                    <input type="submit" class="btn btn-primary" value="Search"/>
                </div>
            </form>
        </div>
        <div class="col-md-10">
            <table class="table">
                @foreach($data as $user)
                <tr>
                    <td>{{$user->ID}}</td>
                    <td>{{$user->name}}</td>
                    <td>{{$user->email}}</td>
                    <td>{{$user->created_at}}</td>
                    <td>{{$user->updated_at}}</td>
                   
                </tr>
                @endforeach
            </table>
            {{ $data->links() }}
        </div>
    </div>
</div>
@endsection

Trong đoạn code trên mình extends(layouts.app), vì mình đã cái đặt php artisan make:auth 
Còn $data->links() dùng hiển thị pagination ra view

# Configuration Route in Laravel 

//routes/web.php
Route::get("/search",'SearchController@index');

# Test Paginated data with Search functionality in Laravel

php artisan serve

Pagination for search results laravel 5.8Pagination for search results laravel 5.8

x

Ủng hộ tôi bằng cách click vào quảng cáo. Để tôi có kinh phí tiếp tục phát triển Website!(Support me by clicking on the ad. Let me have the money to continue developing the Website!)