Truyền tham số cho phần mềm trung gian Laravel

Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách truyền tham số trong phần mềm trung gian Laravel. Bạn đã biết rằng phần mềm trung gian của Laravel theo mặc định chấp nhận hai tham số, một là $request và một là tham số $next. Nhưng chúng ta cũng có thể truyền một hoặc nhiều tham số trong phần mềm trung gian của Laravel

Truyền tham số trong Middleware Laravel

Các tham số phần mềm trung gian bổ sung bổ sung có thể được chuyển đến phần mềm trung gian sau $next một đối số như. Xem mã ví dụ dưới đây để hiểu

ứng dụng\Http\Middleware\EnsureUserHasRole. php

user()->hasRole($role)) {
            // Redirect...
        }
 
        return $next($request);
    }
 
}

Giờ đây, các tham số Phần mềm trung gian phải được chỉ định khi xác định tuyến đường bằng cách phân tách tên phần mềm trung gian và các tham số bằng : và nếu Nhiều thì tất cả các tham số phải được phân tách bằng dấu phẩy

Chúng tôi biết rằng laravel là framework tốt nhất trong PHP. Laravel framework cung cấp cho chúng tôi một số chức năng và bạn cũng có thể tìm thấy từ trang web này. Nhưng bây giờ ở đây trong bài đăng này, bạn có thể tìm hiểu về cách tạo phần mềm trung gian tùy chỉnh với việc truyền tham số trong ví dụ về ứng dụng laravel và cũng biết cách sử dụng phần mềm trung gian với tham số định tuyến trong ứng dụng laravel của bạn. Bây giờ trong ví dụ này, chúng ta sẽ tìm hiểu cách thêm phần mềm trung gian bằng cách kiểm tra người dùng có vai trò truy cập cho tuyến đường này ngay từ đầu trong ứng dụng laravel của bạn

Vì vậy, ở đây tôi cũng sẽ thêm cách tạo một phần mềm trung gian trong bài viết trước của tôi, bạn cũng có thể thấy điều đó

Bây giờ trong ví dụ này, tôi sẽ thêm phần mềm trung gian để kiểm tra người dùng có quyền truy cập vai trò hay không cho tuyến đường này

Vì vậy, lúc đầu cần tạo phần mềm trung gian RoleMiddleware bằng cách sử dụng lệnh dưới đây

Bước 1. Tạo phần mềm trung gian

php artisan make:middleware RoleMiddleware

Bước 2. Đăng ký phần mềm trung gian

Bây giờ bạn phải đăng ký và tạo bí danh phía trên phần mềm trung gian trong Kernel. tập tin php. Vì vậy, lúc đầu mở Kernel. php và thêm dòng dưới đây

ứng dụng/Http/Kernel. php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel

{

protected $routeMiddleware = [

'role' => \App\Http\Middleware\RoleMiddleware::class,

];

}

Bước 3. Thực hiện logic trong Middleware

Được rồi, bây giờ chúng ta có thể tìm thấy RoleMiddleware. php trong thư mục app/Http/Middleware và cần mở RoleMiddleware. php và sau đó đặt mã dưới đây vào tệp đó. Vì vậy, trong tệp này, tôi sẽ kiểm tra vai trò tham số đã cho có phải là quyền truy cập cho người dùng đăng nhập hiện tại hay không

ứng dụng/Http/Middleware/RoleMiddleware. php

namespace App\Http\Middleware;

use Closure;

use Auth;

class RoleMiddleware

{

/**

* Handle an incoming request.

*

* @param \Illuminate\Http\Request $request

* @param \Closure $next

* @return mixed

*/

public function handle($request, Closure $next, $role)

{

if (! $request->user()->hasRole($role)) {

return redirect()->route('home');

}

return $next($request);

}

}

Bây giờ bạn phải đăng ký và tạo bí danh phía trên phần mềm trung gian trong Kernel. tập tin php. Vì vậy, lúc đầu mở Kernel. php và thêm dòng dưới đây

Bước 4. Tạo tuyến đường

Hy vọng bây giờ chúng tôi đã sẵn sàng sử dụng phần mềm trung gian vai trò trong các tuyến đường của mình. tập tin php. Vì vậy, chúng ta có thể thấy ở đây cách sử dụng phần mềm trung gian trong các tuyến đường. tập tin php

Có tham số là gói Laravel của Tim MacDonald để “chuyển đối số [đến phần mềm trung gian] theo cách giống PHP hơn. ”

Đây là một ví dụ về cách sử dụng chính như được tìm thấy trong

Đầu tiên, sau đây là một ví dụ đơn giản về phần mềm trung gian ThrottleRequests của Laravel trông như thế nào

class ThrottleRequests

{

use HasParameters;

 

public function handle($request, Closure $next, $maxAttempts = 60, $decayMinutes = 1, $prefix = '')

{

//

}

}

Sau đó, bạn có thể định cấu hình phần mềm trung gian theo lộ trình như vậy

Route::stuff()

->middleware([

ThrottleRequests::with([

'maxAttempts' => 120,

]),

]);

Như bạn có thể thấy từ ví dụ, phương thức with() của gói này được tìm thấy trong đặc điểm HasParameters sẽ xử lý các tham số có giá trị mặc định

Readme phác thảo các lợi ích bổ sung của việc sử dụng gói này với phần mềm trung gian của ứng dụng của bạn

Has Parameters cải thiện khả năng phân tích tĩnh/hỗ trợ IDE, cho phép bạn chỉ định các đối số bằng cách tham chiếu tên tham số, cho phép bỏ qua các tham số tùy chọn (dự phòng về giá trị mặc định của chúng) và thêm một số xác thực để bạn không vô tình quên bất kỳ tham số bắt buộc nào

Tìm hiểu thêm

Tim đã viết một bài báo (Suy nghĩ lại về API đối số phần mềm trung gian của Laravel) trình bày chi tiết nền tảng đằng sau gói này và hướng dẫn bạn quá trình suy nghĩ của anh ấy về cách anh ấy đến với gói này

Bạn có thể tìm hiểu thêm về gói này, nhận hướng dẫn cài đặt đầy đủ và xem mã nguồn trên GitHub tại timacdonald/has-parameters

Làm cách nào để lấy tham số URL trong phần mềm trung gian của Laravel?

Chúng tôi có thể truy cập các tham số tuyến đường theo hai cách. Một cách là sử dụng $request->route('parameter_name') . , trong đó tên_tham số đề cập đến cái mà chúng ta gọi là tham số trong tuyến đường. Trong phương thức xử lý trong lớp DumpMiddleware được tạo trong ứng dụng/Http/Middleware/DumpMiddleware. tập tin php.

Làm cách nào để sử dụng phần mềm trung gian trong bộ điều khiển Laravel?

Cách sử dụng/Tạo ví dụ về Middleware Laravel 8 .
nghệ nhân php làm. phần mềm trung gian CheckStatus. Sau khi tạo thành công phần mềm trung gian, hãy truy cập app/http/kernel. php và đăng ký phần mềm trung gian tùy chỉnh của bạn tại đây. .
bước 2. Triển khai logic trong Middleware. .
bước 3. Thêm tuyến đường. .
Bước 4. Thêm phương thức trong bộ điều khiển

Làm cách nào để sử dụng phần mềm trung gian trong các tuyến Laravel?

Gán phần mềm trung gian cho các tuyến . tệp php you should first assign the middleware a key in your application's app/Http/Kernel.php file . Theo mặc định, thuộc tính $routeMiddleware của lớp này chứa các mục nhập cho phần mềm trung gian đi kèm với Laravel.

Làm cách nào để sử dụng phần mềm trung gian xác thực trong Laravel 8?

Sử dụng phần mềm trung gian Auth . Nếu người dùng chưa được xác thực, phần mềm trung gian sẽ chuyển hướng người dùng đến màn hình đăng nhập . Tuy nhiên, nếu người dùng được xác thực, phần mềm trung gian sẽ cho phép yêu cầu tiếp tục.