Giáo trình Xây dựng Website sử dụng Framework
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 toà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.
Tất cả các dependencies được ghi chú trong tệp composer.json được đặt
trong thư mục nguồn.
LUONG VAN HIEU
1
➢ 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ý, quên 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 toà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 toà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 =
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 yê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 toà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 hoà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');
});
resources/view/welcome.blade.php
LUONG VAN HIEU
17
<!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="https://fonts.googleapis.com/css?family=Nunito:200,600"
rel="stylesheet">
<!-- Styles -->
<style>
html, body {
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;
}
.content {
LUONG VAN HIEU
18
Xây dựng website sử dụng Framework
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
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Xây dựng Website sử dụng Framework", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
- giao_trinh_xay_dung_website_su_dung_framework.docx