Tải bản đầy đủ (.docx) (126 trang)

Xây dựng website sử dụng framework

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.87 MB, 126 trang )

Xây dựng website sử dụng Framework

Bài 1: Giới thiệu
Laravel là một framework PHP mã nguồn mở, mạnh mẽ và dễ hiểu. Nó
tuân theo một mẫu thiết kế model-view-controller. Laravel sử dụng lại các
thành phần hiện có của các khung khác nhau để giúp tạo ra một ứng dụng web.
Do đó, ứng dụng web được thiết kế có cấu trúc và thực dụng hơn.
Laravel cung cấp một tập hợp các chức năng phong phú kết hợp các tính
năng cơ bản của các framework PHP như CodeIgniter, Yii và các ngôn ngữ lập
trình khác như Ruby on Rails. Laravel có một bộ tính năng rất phong phú sẽ
giúp tăng tốc độ phát triển web.
Nếu bạn đã quen thuộc với Core PHP và Advanced PHP, Laravel sẽ
giúp công việc của bạn dễ dàng hơn. Nó tiết kiệm rất nhiều thời gian nếu bạn
đang có kế hoạch phát triển một trang web từ đầu. Hơn nữa, một trang web
được xây dựng trong Laravel là an tồn và ngăn chặn một số cuộc tấn cơng
web.
 Ưu điểm của Laravel
Khi bạn đang thiết kế một ứng dụng web dựa trên Laravel, nó cung cấp
cho bạn những lợi thế sau:
 Ứng dụng web trở nên có khả năng mở rộng hơn, nhờ vào framework
Laravel.
 Tiết kiệm đáng kể thời gian trong việc thiết kế ứng dụng web, vì
Laravel sử dụng lại các thành phần từ framework khác trong việc phát
triển ứng dụng web.
 Nó bao gồm các khơng gian tên và giao diện, do đó hữu ích trong việc
tổ chức và quản lý tài nguyên.
 Composer
Composer là một công cụ bao gồm tất cả các dependencies và thư viện.
Nó cho phép người dùng tạo một dự án liên quan đến framework đã đề cập (ví
dụ: những dự án được sử dụng trong cài đặt Laravel). Thư viện của bên thứ ba
có thể được cài đặt dễ dàng với sự trợ giúp của composer.



LUONG VAN HIEU

1


Tất cả các dependencies được ghi chú trong tệp composer.json được đặt
trong thư mục nguồn.
 Artisan
Giao diện dòng lệnh được sử dụng trong Laravel được gọi là Artisan. Nó
bao gồm một tập hợp các lệnh hỗ trợ xây dựng một ứng dụng web. Các lệnh này
được kết hợp từ framework Symphony..
 Các tính năng của Laravel
Laravel cung cấp các tính năng chính sau đây giúp nó trở thành một lựa
chọn lý tưởng để thiết kế các ứng dụng web:
 Tính mô đun: Laravel cung cấp 20 thư viện và mô-đun tích hợp giúp
tăng cường ứng dụng. Mỗi mơ-đun được tích hợp với trình quản lý phụ
thuộc Composer giúp dễ dàng cập nhật.
 Khả năng kiểm tra: Laravel bao gồm các tính năng và trợ giúp giúp
kiểm tra thơng qua các trường hợp thử nghiệm khác nhau. Tính năng này
giúp duy trì mã theo yêu cầu.
 Định tuyến (Routing): Laravel cung cấp một cách tiếp cận linh hoạt cho
người dùng để xác định các routes trong ứng dụng web. Định tuyến giúp
mở rộng ứng dụng theo cách tốt hơn và tăng hiệu suất của nó.
 Quản lý cấu hình: Một ứng dụng web được thiết kế trong Laravel sẽ
chạy trên các mơi trường khác nhau, điều đó có nghĩa là sẽ có sự thay đổi
liên tục trong cấu hình của nó. Laravel cung cấp một cách tiếp cận nhất
quán để xử lý cấu hình một cách hiệu quả.
 Trình tạo truy vấn và ORM: Laravel kết hợp một trình xây dựng truy
vấn giúp truy vấn cơ sở dữ liệu bằng các phương thức chuỗi đơn giản

khác nhau. Nó cung cấp ORM (Object Relative Mapper) và triển khai
ActiveRecord được gọi là Eloquent.
 Xây dựng lược đồ (Schema Builder): Schema Builder duy trì các định
nghĩa và lược đồ cơ sở dữ liệu trong mã PHP. Nó cũng duy trì theo dõi
các thay đổi liên quan đến di chuyển cơ sở dữ liệu.
 Công cụ template: Laravel sử dụng công cụ Blade Template, một ngôn
ngữ template được sử dụng để thiết kế các khối và bố cục phân cấp với
các khối được xác định trước bao gồm nội dung động.
 E-mail: Laravel bao gồm một lớp mail giúp gửi thư có nội dung phong
phú và tệp đính kèm từ ứng dụng web.
LUONG VAN HIEU

2


Xây dựng website sử dụng Framework

 Xác thực: Xác thực người dùng là một tính năng phổ biến trong các ứng
dụng web. Laravel giảm bớt việc thiết kế xác thực vì nó bao gồm các tính
năng như đăng ký, qn mật khẩu và gửi lời nhắc mật khẩu.
 Redis: Laravel sử dụng Redis để kết nối với một phiên hiện có và bộ
đệm cho mục đích chung. Redis tương tác với phiên trực tiếp.
 Hàng đợi: Laravel bao gồm các dịch vụ xếp hàng như gửi email số lượng
lớn hoặc một công việc Cron được chỉ định. Các hàng đợi này giúp hoàn
thành các nhiệm vụ một cách dễ dàng hơn mà khơng phải chờ đợi nhiệm
vụ trước đó được hoàn thành.
 Event và Command Bus: Laravel 5.1 bao gồm Command Bus giúp
thực thi các lệnh và gửi các sự kiện một cách đơn giản. Các lệnh trong
Laravel hoạt động theo vòng đời của ứng dụng.


LUONG VAN HIEU

3


Bài 2: Cài đặt Laravel
Để quản lý các dependencies, Laravel sử dụng composer. Hãy chắc chắn
rằng bạn đã cài đặt composer trên hệ thống của mình trước khi cài đặt Laravel.
Trong bài này, bạn sẽ được hướng dẫn quá trình cài đặt của Laravel.
Bạn sẽ phải làm theo các bước được đưa ra dưới đây để cài đặt Laravel
vào hệ thống:
Bước 1 - Truy cập URL sau và tải xuống trình soạn thảo để cài đặt nó trên hệ
thống.
/>Bước 2 - Sau khi composer được cài đặt, hãy kiểm tra cài đặt bằng cách nhập
lệnh composer trong dấu nhắc lệnh như trong ảnh chụp màn hình sau.

Bước 3 - Bây giờ, chúng ta sẽ tập trung vào việc cài đặt framework hoàn chỉnh.
Giả sử chúng ta tạo dự án tên test trong thư mục C:\xampp\htdocs. Tại thư
mục htdocs, mở command và nhập lệnh sau:
composer create-project --prefer-dist laravel/laravel test
Đầu ra của lệnh như dưới đây:
LUONG VAN HIEU

4


Xây dựng website sử dụng Framework

Framework Laravel có thể được cài đặt trực tiếp với nhánh phát triển (develop)
bao gồm framework mới nhất.

Bước 4 - Lệnh trên sẽ cài đặt Laravel trong thư mục hiện tại. Bắt đầu dịch vụ
Laravel bằng cách thực hiện lệnh sau.
php artisan serve
Bước 5 - Sau khi thực hiện lệnh trên, bạn sẽ thấy một màn hình như hình bên
dưới:

LUONG VAN HIEU

5


Bước 6 - Sao chép URL được gạch chân màu xám trong ảnh chụp màn hình ở
trên và mở URL đó trong trình duyệt. Nếu bạn thấy màn hình sau, nó có nghĩa
là Laravel đã được cài đặt thành cơng.

LUONG VAN HIEU

6


Xây dựng website sử dụng Framework

Bài 3: Cấu trúc ứng dụng Laravel
Cấu trúc ứng dụng trong Laravel về cơ bản là cấu trúc của các thư mục,
thư mục con và tệp có trong một dự án. Khi chúng ta tạo một dự án trong
Laravel, chúng ta có cấu trúc ứng dụng như trong hình ở đây.
Ảnh chụp nhanh được hiển thị ở đây đề cập đến thư mục gốc của Laravel,
cụ thể là dự án laravel. Nó bao gồm các thư mục con và tập tin khác nhau. Việc
phân tích các thư mục và tệp, cùng với các chức năng của chúng được đưa ra
dưới đây:


LUONG VAN HIEU

7


App
Nó là thư mục ứng dụng (application) và bao gồm tồn bộ mã nguồn của
dự án. Nó chứa các sự kiện (events), ngoại lệ (exception) và khai báo phần mềm
trung gian (middleware). Thư mục ứng dụng bao gồm các thư mục phụ khác
nhau như được giải thích bên dưới:
Console
Console chứa tệp Kernel.php định nghĩa các câu lệnh trên artisan.

Exceptions
Thư mục này chứa tất cả các phương thức cần thiết để xử lý các trường
hợp ngoại lệ. Nó cũng chứa tập tin handle.php xử lý tất cả các ngoại lệ.
Http
Thư mục http có các thư mục con cho controllers, middleware.
Thư mục con Middleware bao gồm cơ chế phần mềm trung gian, bao
gồm cơ chế lọc và giao tiếp giữa response và request.
Thư mục con controllers chứa các controller của project .
Providers
Thư mục này bao gồm tất cả các Providers dịch vụ cần thiết để đăng ký
các sự kiện cho các máy chủ core và cấu hình ứng dụng Laravel.
Bootstrap
Thư mục này chứa tất cả các tập lệnh bootstrap của ứng dụng. Nó chứa
một thư mục con cụ thể là cache, bao gồm tất cả các tệp được liên kết để lưu trữ
ứng dụng web. Bạn cũng có thể tìm thấy tệp app.php, nó khởi tạo các tập lệnh
cần thiết cho bootstrap.

Config
Thư mục config bao gồm các cấu hình khác nhau và các tham số liên
quan cần thiết cho hoạt động trơn tru của ứng dụng Laravel. Các tập tin khác
nhau trong thư mục config được hiển thị trong hình ảnh dưới đây. Các tên file
hoạt động theo chức năng liên quan đến chúng.
LUONG VAN HIEU

8


Xây dựng website sử dụng Framework

Database
Như tên cho thấy, thư mục này bao gồm các tham số khác nhau cho các
chức năng cơ sở dữ liệu. Nó bao gồm ba thư mục con như được đưa ra dưới
đây:
 Seeds - Chứa các lớp được sử dụng để tạo dữ liệu thêm vào CSDL.
 Migrations - Thư mục này chứa các file tạo và chỉnh sửa dữ liệu.
 Factories - Thư mục này được sử dụng để tạo số lượng lớn các bản
ghi dữ liệu.
Public
Đây là thư mục gốc giúp khởi tạo ứng dụng Laravel. Nó bao gồm các tệp
và thư mục sau:
 .htaccess - Tập tin này cung cấp cấu hình máy chủ.
 javascript và css - Những tệp này được coi là assets được sử dụng để
chứa các file js và css.
 index.php - Tập tin này là cần thiết để khởi tạo một ứng dụng web.
Resources
LUONG VAN HIEU


9


Thư mục Resources chứa các tệp giúp cải thiện ứng dụng web. Các thư
mục con có trong thư mục này và mục đích của chúng được giải thích bên dưới:
 js - Thư mục các file javascript cho ứng dụng.
 scss - Thư mục chứa các file css cho ứng dụng.
 lang - Thư mục này bao gồm cấu hình vị trí địa lý hoặc ngơn ngữ.
 views - Views là các tệp HTML hoặc templates tương tác với người
dùng và đóng vai trị chính trong kiến trúc MVC.
Quan sát rằng thư mục Resources sẽ được làm phẳng thay vì có một thư
mục assets.

routes
Thư mục routes, chứa tất cả các điều khiển route (đường dẫn) trong
project. Chứa các file route sẵn có: web.php, channels.php, api.php, và
console.php.

api
file api.php, điều khiển các route của ứng dụng, như route của ứng dụng
User (đăng ký, đăng nhập, ...).
web
file web.php, điều khiển các route của view, như route của trang top, sản
phẩm, ...
Storage
LUONG VAN HIEU

10



Xây dựng website sử dụng Framework

Đây là thư mục lưu trữ tất cả các bản ghi và các tệp cần thiết khi dự án
Laravel đang chạy. Các thư mục con có trong thư mục này và mục đích của
chúng được đưa ra dưới đây:
 app - Thư mục này chứa các tệp được gọi liên tiếp.
 framework - Nó chứa các phiên, bộ đệm và các khung nhìn (views)
và được gọi thường xuyên.
 Logs - Tất cả các trường hợp ngoại lệ và nhật ký lỗi được theo dõi
trong thư mục con này.
Tests
Chứa những file tests, như PHPUnit test.
Vendor
Laravel hoàn tồn dựa trên các Composer dependencies , ví dụ để cài đặt
thiết lập Laravel hoặc nhúng các thư viện của bên thứ ba, v.v ... Thư mục
Vendor nhúng tất cả các composer dependencies.
Ngoài các tệp được đề cập ở trên, Laravel cịn bao gồm một số tệp khác
đóng vai trị chính trong các chức năng khác nhau như cấu hình GitHub, các gói
và các thư viện của bên thứ ba.
Các tập tin trong cấu trúc ứng dụng được hiển thị bên dưới:

LUONG VAN HIEU

11


Bài 4: Cấu hình Laravel
Trong bài trước, chúng ta đã biết các tệp cấu hình cơ bản của Laravel
được đặt trong thư mục cấu hình. Trong bài này, chúng ta hãy thảo luận về các
thể loại có trong cấu hình.

Cấu hình mơi trường
Các biến mơi trường là những biến cung cấp danh sách các dịch vụ web
cho ứng dụng web. Tất cả các biến môi trường được khai báo trong tệp .env bao
gồm các tham số cần thiết để khởi tạo cấu hình.
Theo mặc định, tệp .env bao gồm các tham số sau:
APP_ENV = local
APP_DEBUG = true
APP_KEY = base64:ZPt2wmKE/X4eEhrzJU6XX4R93rCwYG8E2f8QUA7kGK8 =
APP_URL = http://localhost
LUONG VAN HIEU

12


Xây dựng website sử dụng Framework
DB_CONNECTION = mysql
DB_HOST = 127.0.0.1
DB_PORT = 3306
DB_DATABASE = homestead
DB_USERNAME = homestead
DB_PASSWORD = secret
CACHE_DRIVER = file
SESSION_DRIVER = file
QUEUE_DRIVER = sync
REDIS_HOST = 127.0.0.1
REDIS_PASSWORD = null
REDIS_PORT = 6379
MAIL_DRIVER = smtp
MAIL_HOST = mailtrap.ioMAIL_PORT = 2525
MAIL_USERNAME = null

MAIL_PASSWORD = null
MAIL_ENCRYPTION = null

Các điểm quan trọng
Trong khi làm việc với các tệp cấu hình cơ bản của Laravel, cần lưu ý các
điểm sau:
 Không nên cố định tệp .env đối với nguồn ứng dụng, vì mỗi nhà phát
triển hoặc người dùng có một số cấu hình mơi trường riêng cho ứng
dụng web.
 Đối với các tùy chọn sao lưu, nhóm phát triển nên sử dụng tệp
.env.example, nó sẽ chứa các cấu hình mặc định.
Truy xuất các biến mơi trường
Tất cả các biến mơi trường được khai báo trong tệp .env có thể được truy
cập bởi các hàm env-helper sẽ gọi tham số tương ứng. Các biến này cũng được
liệt kê thành biến toàn cục $ _ENV mỗi khi ứng dụng nhận được u cầu từ
phía người dùng. Bạn có thể truy cập biến mơi trường như hình bên dưới 'env' => env('APP_ENV', 'production'),
Các hàm env-helper được gọi trong tệp app.php có trong thư mục cấu
hình. Ví dụ đã cho ở trên đang gọi tham số cục bộ cơ bản.
Truy cập các giá trị cấu hình

LUONG VAN HIEU

13


Bạn có thể dễ dàng truy cập các giá trị cấu hình ở bất cứ đâu trong ứng
dụng bằng chức năng trợ giúp cấu hình tồn cục. Trong trường hợp nếu các giá
trị cấu hình khơng được khởi tạo, các giá trị mặc định được trả về.
Ví dụ: để đặt múi giờ mặc định, đoạn mã sau được sử dụng config(['app.timezone' => 'Asia/Ho_Chi_minh']);
Bộ nhớ đệm của cấu hình

Để tăng hiệu suất và tăng cường ứng dụng web, điều quan trọng là phải
lưu trữ tất cả các giá trị cấu hình. Lệnh để lưu trữ các giá trị cấu hình là:
config:cache
Ảnh chụp màn hình sau đây cho thấy bộ nhớ đệm theo cách tiếp cận có
hệ thống:

Chế độ bảo trì
Đơi khi bạn có thể cần cập nhật một số giá trị cấu hình hoặc thực hiện bảo
trì trên trang web của mình. Trong những trường hợp như vậy, giữ nó trong chế
độ bảo trì. Các ứng dụng web như vậy được giữ trong chế độ bảo trì thơng qua
một ngoại lệ có tên MaintenanceModeException với mã trạng thái 503.
Bạn có thể kích hoạt chế độ bảo trì trên ứng dụng web Laravel của mình
bằng lệnh sau:
php artisan down

LUONG VAN HIEU

14


Xây dựng website sử dụng Framework

Ảnh chụp màn hình sau đây cho thấy ứng dụng web sẽ hiển thị khi nó bị
ngừng hoạt động

Khi bạn hồn thành cơng việc cập nhật và bảo trì khác, bạn có thể tắt chế
độ bảo trì trên ứng dụng web của mình bằng lệnh sau
php artisan up

LUONG VAN HIEU


15


Bây giờ, bạn có thể thấy rằng trang web hiển thị đầu ra với chức năng
phù hợp và chỉ ra rằng chế độ bảo trì hiện đã bị xóa như hiển thị bên dưới

LUONG VAN HIEU

16


Xây dựng website sử dụng Framework

Bài 5: Định tuyến (Routing)
Trong Laravel, tất cả các yêu cầu (request) được ánh xạ với sự trợ giúp
của các routes. Định tuyến cơ bản định tuyến yêu cầu đến các controller liên
quan. Bài này thảo luận về định tuyến trong Laravel.
Định tuyến trong Laravel bao gồm các loại sau:
 Định tuyến cơ bản
 Định tuyến các tham số
 Các định tuyến đặt tên
Định tuyến cơ bản
Tất cả các định tuyến ứng dụng được đăng ký trong tệp routes/web.php.
Tệp này thông báo cho Laravel về các URI mà nó sẽ phản hồi và controller
được liên kết sẽ cung cấp cho nó một lời gọi cụ thể. Định tuyến mẫu cho trang
welcome có thể được hiển thị trong ảnh chụp màn hình được cung cấp bên
dưới:

Route::get('/', function () {

return view('welcome');
});
Ví dụ
Quan sát ví dụ sau để hiểu thêm về Routing.
routes/web.php
Route::get('/', function () {
return view('welcome');
});

LUONG VAN HIEU

17


resources/view/welcome.blade.php
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel</title>
<!-- Fonts -->
<link href=" />rel="stylesheet">
<!-- Styles -->
<style>
html, body {
background-color: #fff;
color: #636b6f;
font-family: 'Nunito', sans-serif;
font-weight: 200;

height: 100vh;
margin: 0;
}
.full-height {
height: 100vh;
}
.flex-center {
align-items: center;
display: flex;
justify-content: center;
}
LUONG VAN HIEU

18


Xây dựng website sử dụng Framework

.content {
text-align: center;
}
.title {
font-size: 84px;
}
.m-b-md {
margin-bottom: 30px;
}
</style>
</head>
<body>

<div class="flex-center position-ref full-height">
<div class="content">
<div class="title m-b-md">
Laravel
</div>
</div>
</div>
</body>
</html>
Cơ chế Routing hiển thị như ảnh dưới đây

LUONG VAN HIEU

19


Bây giờ chúng ta cúng tìm hiểu các bước liên quan đến cơ chế định tuyến
một cách chi tiết:
Bước 1 - Đầu tiên, chúng ta nên thực thi URL gốc của ứng dụng.
Bước 2 - Bây giờ, URL được thực thi phải khớp với phương thức thích hợp
trong tệp web.php. Trong trường hợp hiện tại, nó phải phù hợp với phương thức
và URL gốc (’/'). Điều này sẽ thực hiện các chức năng liên quan.
Bước 3 - Hàm gọi file template resources/views/welcome.blade.php. Tiếp
theo, hàm gọi hàm view() với đối số ‘welcome', khơng sử dụng blade.php.
Nó sẽ tạo ra đầu ra HTML như trong hình bên dưới:

Định tuyến các tham số

LUONG VAN HIEU


20


Xây dựng website sử dụng Framework

Đôi khi trong ứng dụng web, bạn có thể cần phải lấy các tham số được
truyền bằng URL. Đối với điều này, bạn nên sửa đổi mã trong tập tin web.php.
Bạn có thể nắm bắt các tham số trong tệp web.php theo hai cách như
được thảo luận ở đây:
Các tham số bắt buộc
Các tham số này là những tham số cần được bắt buộc để định tuyến ứng
dụng web. Ví dụ: để lấy số nhận dạng (ID) người dùng từ URL có thể được thực
hiện bằng cách xác định các tham số định tuyến như dưới đây:
Route::get('ID/{id}',function($id) {
echo 'ID: '.$id;
});
Các tham số tùy chọn
Đôi khi các nhà phát triển có thể tạo ra các tham số là tùy chọn và có thể
bao gồm dấu ? sau tên tham số trong URL. Điều quan trọng là giữ giá trị mặc
định được đề cập dưới dạng tên tham số. Quan sát ví dụ sau đây cho thấy cách
xác định tham số tùy chọn:
Route::get('user/{name?}', function ($name = 'LearnSkill') { return $name;});
Ví dụ trên kiểm tra xem giá trị có khớp với LearnSkill hay khơng và
định tuyến đến URL được xác định.
Các định tuyến đặt tên
Các định tuyến đặt tên cho phép một cách thuận tiện để tạo các routes.
Chuỗi các định tuyến có thể được chỉ định bằng cách sử dụng phương thức
name vào định nghĩa routes. Đoạn mã sau đây cho thấy một ví dụ để tạo các
routes được đặt tên bằng controller.
Route::get('user/profile', 'UserController@showProfile')->name('profile');

UserController sẽ gọi hàm showProfile với tham số là profile. Các tham
số sử dụng phương thức name vào định nghĩa routes.

LUONG VAN HIEU

21


Bài 6: Middleware
Middleware hoạt động như một cầu nối giữa một yêu cầu (request) và
một phản hồi (response). Nó là một loại cơ chế lọc. Bài này giải thích cho bạn
cơ chế phần mềm trung gian trong Laravel.
Laravel có một middleware để xác minh xem người dùng của ứng dụng
có được xác thực hay không. Nếu người dùng được xác thực, nó sẽ chuyển
hướng đến trang chủ, nếu khơng, nó sẽ chuyển hướng đến trang đăng nhập.
Middleware có thể được tạo bằng cách thực hiện lệnh sau:
php artisan make:middleware <tên-middleware>
Thay thế <tên-middleware> bằng tên của middleware của bạn.
middleware bạn tạo có thể được nhìn thấy trong thư mục
app/Http/Middleware.
Ví dụ
Quan sát ví dụ sau để hiểu cơ chế middleware
Bước 1 - Bây giờ chúng ta hãy tạo AgeMiddleware. Để tạo nó, chúng ta cần
thực hiện lệnh sau:
php artisan make:middleware AgeMiddleware
Bước 2 - Sau khi thực hiện thành công lệnh, bạn sẽ nhận được output như sau:
LUONG VAN HIEU

22



Xây dựng website sử dụng Framework

Bước 3 - AgeMiddleware sẽ được tạo tại app/Http/Middleware. Các tập tin
mới được tạo sẽ có mã sau đây đã được tạo cho bạn.
namespace App\Http\Middleware;
use Closure;
class AgeMiddleware
{
public function handle($request, Closure $next)
{
return $next($request);
}
}
Đăng ký Middleware
Chúng ta cần phải đăng ký Middleware trước khi sử dụng nó. Có hai loại
Middleware trong Laravel.
 Global Middleware
 Route Middleware
Global Middleware sẽ chạy trên mọi yêu cầu HTTP của ứng dụng, trong khi đó
routeMiddleware sẽ được gán cho một route cụ thể. Middleware có thể được
đăng ký tại app/Http/Kernel.php. Tệp này chứa hai thuộc tính $middleware
và $routeMiddleware. Thuộc tính $middleware được sử dụng để đăng ký
Global Middleware và thuộc tính $routeMiddleware được sử dụng để đăng
ký route cho middleware cụ thể.
Để đăng ký Global Middleware , hãy liệt kê lớp ở cuối thuộc tính
$middleware.
LUONG VAN HIEU


23


protected $middleware = [
\App\Http\Middleware\TrustProxies::class,
\App\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::cla
ss,
];
Để đăng ký middleware cụ thể của route, hãy thêm khóa và giá trị vào thuộc
tính $routeMiddleware.
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' =>
\Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
Ví dụ
Chúng ta đã tạo AgeMiddleware trong ví dụ trước. Bây giờ chúng ta có
thể đăng ký nó trong thuộc tính middleware cụ thể. Mã cho đăng ký đó được
hiển thị dưới đây.
Sau đây là mã cho app/Http/Kernel.php

protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
LUONG VAN HIEU

24


Xây dựng website sử dụng Framework

'auth.basic' =>
\Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'Age' => \App\Http\Middleware\AgeMiddleware::class,
];
Các Tham số middleware
Chúng ta cũng có thể truyền tham số với Middleware. Ví dụ: nếu ứng
dụng của bạn có các vai trị khác nhau như người dùng, quản trị viên, siêu quản
trị viên, v.v. và bạn muốn xác thực hành động dựa trên vai trò, điều này có thể
đạt được bằng cách chuyển tham số với middleware. Middleware mà chúng ta
tạo chứa hàm sau đây và chúng ta có thể truyền đối số sau đối số $next.
public function handle($request, Closure $next) {
return $next($request);
}
Ví dụ

Bước 1 - Tạo RoleMiddleware bằng cách thực hiện lệnh sau:
php artisan make:middleware RoleMiddleware
Bước 2 - Sau khi thực hiện thành công, bạn sẽ nhận được output sau

LUONG VAN HIEU

25


×