Tải bản đầy đủ (.doc) (69 trang)

Tìm hiểu về framework laravel 4 x

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 (937.87 KB, 69 trang )

TRƯỜNG ĐẠI HỌC TRÀ VINH
KHOA KỸ THUẬT VÀ CÔNG NGHỆ
BỘ MÔN CÔNG NGHỆ THÔNG TIN

BÁO CÁO ĐỒ ÁN MÔN HỌC
HỌC KỲ I, NĂM HỌC 2014 – 2020

TÌM HIỂU VỀ FRAMEWORK LARAVEL 4.X

GIÁO VIÊN HƯỚNG DẪN
NGUYỄN NGỌC ĐAN THANH

SINH VIÊN THỰC HIỆN
BÙI VĂN TÍNH
MSSV: 110112002
LỚP: DA12TT

Trà Vinh, ngày 10 tháng 1 năm 2020


TRƯỜNG ĐẠI HỌC TRÀ VINH
KHOA KỸ THUẬT VÀ CÔNG NGHỆ
BỘ MÔN CÔNG NGHỆ THÔNG TIN

BÁO CÁO ĐỒ ÁN MÔN HỌC
HỌC KỲ I, NĂM HỌC 2014 – 2020

TÌM HIỂU VỀ FRAMEWORK LARAVEL 4.X

GIÁO VIÊN HƯỚNG DẪN
NGUYỄN NGỌC ĐAN THANH



SINH VIÊN THỰC HIỆN
BÙI VĂN TÍNH
MSSV: 110112002
LỚP: DA12TT

Trà Vinh, ngày 10 tháng 1 năm 2020


LỜI MỞ ĐẦU
Laravel Framework 4, vừa chỉ ra mắt vào cuối tháng 5 - 2013. Tuy vậy, PHP
Framework này đã nhanh chóng có được một cộng đồng rất lớn trong thế giới các
Framework của ngơn ngữ lập trình PHP. Vậy tại sao, Framework này lại được đơng
đảo các lập trình viên đón nhận ?.
Trước hết, sự tinh tế của Laravel nằm ở chỗ bắt kịp được xu hướng công nghệ
mà điểm nhấn ở đây là các tính năng mới trong các phiên bản PHP 5.3 trở lên. Điều
đó được thể hiện qua khái niệm namespace, composer, closure và rất nhiều những
tiêu chuẩn trong design pattern được áp dụng trên nền tảng Framework này. Đồng
thời, với cách hướng dẫn đơn giản và dễ tiếp cận giống với Codeigniter Framework
đã khiến người dùng thích ngay từ lần đầu "tiếp cận" với Framework này.
Laravel 4 cũng có sự tích hợp của một phần trong thư viện symfony và áp dụng
triệt để mơ hình ORM (một phương pháp lập trình để chuyển đổi từ mơ hình
database sang mơ hình đối tượng) với khái niệm liên quan đến Eloquent class. Đồng
thời, nó cũng giải quyết được những vấn đề mà các Framework khác đang mắc
phải. Chẳng hạn như master layout, mơ hình xử lý với ORM dễ dàng hơn và dễ mở
rộng hơn.
Bạn sẽ không cảm thấy thất vọng khi đến với Laravel. Vì những điều mới lạ
trong các Framework mạnh bậc nhất hiện nay sẽ tái hiện lại trên Laravel. Thông qua
điều này, bạn sẽ tiếp cận các PHP Framework khác cực nhanh. Do nền tảng và
những chuẩn mực của Laravel đều theo xu thế chung của sự phát triển mà các PHP

Framework hiện nay đang theo đuổi.
Đồ án tìm hiểu về Laravel Framework giúp các bạn có một cái nhìn mới cũng
như cách sử dụng hiệu quả về Framework này.


LỜI CẢM ƠN
Laravel Framework là một trong những giải pháp tốt nhất cho những ai đang cần
phát triển web bằng ngơn ngữ PHP. Ngồi tính năng bảo mật, khả năng mở rộng
cao, dễ dàng làm việc giữa các team, giảm thiểu thời gian viết code. Thì Laravel
Framework cịn có một cộng đồng phát triển rộng lớn , nơi mà bạn dễ dàng trao đổi
những kinh nghiệm cũng như những đoạn code bảo mật mới nhất cho website của
mình. Vì vậy, em đã chọn đề tài “Tìm hiểu về Framework Laravel 4.x ”. Đề tài này
là một đề tài hay, không những vậy nó cịn rất thiết thực trong thời buổi hiện nay
nên em đã rất thích thú và quyết định chọn đề tài này.
Trước khi chọn đề tài này, em đã có rất nhiều băn khoăn chẳng hạn như: nó có
khó khơng, với kiến thức hiện tại (chưa tiếp cận với Framework nào) thì em có làm
được đề tài này hay khơng,… vì thế em đã gặp cơ, người hướng dẫn trực tiếp (Cô
Nguyễn Ngọc Đan Thanh) để xin cô ý kiến. Cơ ln động viên và khuyến khích em
làm cho em có thêm động lực và sự tự tin để chọn đề tài này.
Trong quá trình làm đề tài thì cơ đã tận tình chỉ dẫn khi mà em gặp khó khăn hay
mắc phải những vướng mắc phức tạp. Cuối cùng thì đề tài em chọn đã được hồn
thành.
Qua đây, cho em xin gửi lời cảm ơn chân thành đến cô. Nhờ cô mà em học được
rất nhiều điều mới và bổ ích. Kiến thức của em được nâng cao hơn, nó rất cần thiết
cho em cũng như cơng việc của em sau này. Một lần nữa cho em nói lời “ Cảm ơn”
đến cơ.


NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………………………………………………………………………………..

…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
…………………………………………………………………………………......
Trà Vinh, ngày ….. tháng ….. năm …..
Giáo viên hướng dẫn
(Ký tên và ghi rõ họ tên)


MỤC LỤC
MỤC LỤC................................................................................................................. 6
MỤC LỤC HÌNH......................................................................................................9

MỤC LỤC BẢNG...................................................................................................10
ĐỀ CƯƠNG CHI TIẾT...........................................................................................11
CHƯƠNG 1: ĐẶT VẤN ĐỀ...................................................................................13
1.1 PHP Framework là gì?...................................................................................13
1.2 Tại sao chúng ta nên sử dụng PHP Framework?............................................14
1.3 Tại sao chúng ta nên sử dụng Laravel Framework?.......................................14
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT........................................................................15
2.1 Cấu trúc thư mục của Laravel........................................................................15
2.2 Cài đặt Laravel...............................................................................................17
2.2.1 Cài Composer..........................................................................................17
2.2.2 Cài Laravel...............................................................................................17
2.3 Cấu hình cơ bản cho ứng dụng.......................................................................18
2.4 Chạy ứng dụng đầu tiên với Laravel..............................................................18
2.5 Route trong Laravel Framework....................................................................18
2.5.1 Basic Routing...........................................................................................18
2.5.2 Route Parameters.....................................................................................20
2.5.3 Route Filters.............................................................................................20
2.5.4 Name Route.............................................................................................22
2.5.5 Route Groups...........................................................................................24
2.5.6 Route Prefixing........................................................................................24
2.6 View trong Laravel Framework......................................................................25
2.7 Controller trong Laravel Framework..............................................................27
2.7.1 Khai báo Controller trong Laravel Framework:.......................................27
2.7.2 Chạy Controller theo phương thức Route::get.........................................27
2.7.3 Implicit Controllers – Sử dụng phương thức Route::controller................28
2.7.4 RESTful Resource Controllers – Sử dụng phương thức Route::resource.29
6


2.7.5 Controller với Filter.................................................................................32

2.8 Kết nối cơ sở dữ liệu......................................................................................34
2.8.1 Cấu hình kết nối cơ sở dữ liệu trong Laravel Framework........................34
2.8.2 Database Transactions..............................................................................35
2.9 Sử dụng Query Builder..................................................................................37
2.9.1 Truy vấn dữ liệu.......................................................................................37
2.9.2 Join bảng dữ liệu......................................................................................41
2.9.3 Hàm trong Laravel Framework................................................................41
2.9.4 Raw Expressions......................................................................................42
2.9.5 Câu lệnh Inserts dữ liệu...........................................................................42
2.9.6 Câu lệnh Updates dữ liệu.........................................................................43
2.9.7 Câu lệnh Deletes dữ liệu..........................................................................43
2.9.8 Câu lệnh Union........................................................................................43
2.10 Eloquent ORM.............................................................................................43
2.10.1 Lấy dữ liệu.............................................................................................44
2.10.2 Thêm dữ liệu (Insert).............................................................................45
2.10.3 Cập nhật dữ liệu (Update)......................................................................45
2.10.4 Xóa dữ liệu (Delete)...............................................................................46
2.11 Sử dụng Migrations và Schema Builder.......................................................46
2.11.1 Lớp Schema Builder – thao tác với bảng CSDL....................................47
2.11.2 Migrations – Quản lý CSDL..................................................................50
CHƯƠNG 3: PHÂN TÍCH - THIẾT KẾ HỆ THỐNG............................................54
3.1 Yêu cầu chức năng:........................................................................................54
3.1.1 Yêu cầu lưu trữ........................................................................................54
3.1.2 Yêu cầu tra cứu........................................................................................54
3.1.3 Yêu cầu tính toán.....................................................................................54
3.1.4 Yêu cầu kết xuất.......................................................................................54
3.2 Yêu cầu phi chức năng...................................................................................54
3.3 Thiết kế dữ liệu..............................................................................................55
3.3.1. Mơ hình thực thể kết hợp (ERD).............................................................55
3.3.1.1 Mơ hình ERD:...................................................................................55

7


3.3.1.2 Danh sách các thực thể......................................................................55
3.3.1.3 Bảng mô tả các thực thể.....................................................................55
3.3.1.3.1 Thực thể posts.............................................................................55
3.3.1.3.2 Thực thể comments.....................................................................56
3.3.1.3.3 Thực thể users.............................................................................56
3.3.2 Mơ hình vật lý..........................................................................................57
3.3.2.1 Mơ hình vật lý...................................................................................57
3.3.2.2 Danh sách các bảng...........................................................................57
3.3.2.3 Mô tả chi tiết các bảng.......................................................................57
3.3.3 Ràng buộc tồn vẹn..................................................................................59
3.3.3.1 Ràng buộc tồn vẹn có bối cảnh là 1 quan hệ....................................59
3.3.3.2 Ràng buộc tồn vẹn có bối cảnh là nhiều quan hệ.............................60
3.4 Thiết kế xử lý.................................................................................................61
3.4.1 Phần Public..............................................................................................61
3.4.2 Phần Admin.............................................................................................61
3.5 Thiết kế giao diện...........................................................................................61
3.5.1 Thiết kế hệ thống thực đơn......................................................................61
3.5.2 Thiết kế màn hình....................................................................................63
CHƯƠNG 4: CÀI ĐẶT – THỬ NGHIỆM..............................................................66
4.1 Các bước chuẩn bị..........................................................................................66
4.2 Dữ liệu thử nghiệm........................................................................................66
4.3 Một số kết quả thử nghiệm:............................................................................68
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN.........................................69
5.1 Kết luận:.........................................................................................................69
5.1.1 Kết quả đạt được......................................................................................69
5.1.2 Hạn chế....................................................................................................69
5.1 Hướng phát triển............................................................................................69

DANH MỤC TÀI LIỆU THAM KHẢO.................................................................70

8


MỤC LỤC HÌNH
Hình 2.1: Thư mục Laravel Framework..................................................................15
Hình 2.2: Chức năng của các thư mục chính...........................................................15
Hình 2.3: Chức năng cụ thể của các thư mục con trong app....................................16
Hình 2.4: Cài đặt Laravel thành cơng......................................................................17
Hình 2.5: Ánh xạ giữa route và action.....................................................................30
Hình 2.6: Thực hiện migrate bằng command line....................................................52
Hình 2.7: Bảng dữ liệu được tạo bằng lệnh migrate................................................52
Hình 3.1: Mơ hình ERD..........................................................................................55
Hình 3.2: Mơ hình vật lý.........................................................................................57
Hình 3.3: Mơ hình xử lý phần Public......................................................................61
Hình 3.4: Mơ hình xử lý phần Admin......................................................................61
Hình 3.5: Mơ hình trang chủ của Website................................................................62
Hình 3.6: Thực đơn ngang.......................................................................................62
Hình 3.7: Thực đơn đăng nhập................................................................................62
Hình 3.8: Thực đơn đăng ký....................................................................................63
Hình 3.9: Giao diện trang chủ..................................................................................63
Hình 3.10: Giao diện đăng nhập khơng thành cơng.................................................64
Hình 3.11: Giao diện đăng ký khơng thành cơng.....................................................64
Hình 3.12: Giao diện đăng nhập thành cơng............................................................65
Hình 3.13: Giao diện đăng ký thành công...............................................................65
Bảng 4.1: Thông tin posts........................................................................................66
Bảng 4.2: Thơng tin users........................................................................................67
Hình 4.3: Màn hình kết quả khi search....................................................................68


9


MỤC LỤC BẢNG
Bảng 3.1: Mô tả thực thể posts................................................................................56
Bảng 3.2: Mô tả thực thể comments........................................................................56
Bảng 3.3: Mô tả thực thể user..................................................................................57
Bảng 3.4: Bảng posts...............................................................................................57
Bảng 3.5: Bảng comments.......................................................................................58
Bảng 3.6: Bảng users...............................................................................................58
Bảng 3.7: Tầm ảnh hưởng bối cảnh posts................................................................59
Bảng 3.8: Tầm ảnh hưởng bối cảnh users................................................................59
Bảng 3.9: Tầm ảnh hưởng bối cảnh comments........................................................60
Bảng 3.10: Tầm ảnh hưởng bối cảnh posts và comments........................................60
Bảng 3.11: Tầm ảnh hưởng bối cảnh users và comments........................................60

10


ĐỀ CƯƠNG CHI TIẾT
Tên Đề Tài: Tìm hiểu về Framework Laravel 4.x
Giáo viên hướng dẫn: Nguyễn Ngọc Đan Thanh
Thời gian thực hiện: 8/12/2014 – 10/01/2020
Sinh viên thực hiện:
- Họ tên: Bùi Văn Tính
- MSSV: 110112002

Nội Dung Đề Tài: Tập trung nghiên cứu lý thuyết và hướng dẫn cách thức sử dụng cơng
cụ lập trình Laravel Framework để phục vụ cho việc học cũng như lập trình web.
Kế Hoạch Thực Hiện:

Tuần

Thời gian

Nội dung cơng việc

Người thực hiện

- Tìm hiểu sơ lược về cơng
cụ
1

lập

trình

Laravel

Từ ngày 08/12/2014 Framework 4.2 trên trang
đến 21/12/2014

Web:

Bùi Văn Tính

/>2.
- Tìm hiểu về cách sử dụng
2

Từ ngày 22/12/2014 các câu lệnh (cú pháp) trong

đến 28/12/2014

Laravel để lập trình web.

Bùi Văn Tính

- Tiến hành lập trình web.
3

4

Từ ngày 29/12/2014 - Hồn thành quyển đồ án
đến 04/01/2020

mơn học.

Từ ngày 05/01/2020 - Hồn thành sản phẩm.
đến 10/01/2020

Bùi Văn Tính

Bùi Văn Tính
11


Xác nhận của GVHD

Ngày 10 tháng 01 năm 2020
Ký và ghi rõ họ tên


12


CHƯƠNG 1:
ĐẶT VẤN ĐỀ

1.1 PHP Framework là gì?
Như các bạn đã biết, PHP là 1 ngôn ngữ script rất phổ biến hiện nay bởi những
lý do: linh hoạt, dễ sử dụng, dễ học, ..v…v. nhưng đôi khi việc viết mã PHP, hay
bất cứ ngơn ngữ (lập trình) nào khác, có thể trở nên đơn điệu và lủng củng. Đó là
lúc PHP Framework có thể giúp bạn.
PHP Frameworks làm cho sự phát triển của những ứng dụng web viết bằng ngôn
ngữ PHP trở nên trôi chảy hơn, bằng cách cung cấp 1 cấu trúc cơ bản để xây dựng
những ứng dụng đó. Hay nói cách khác, PHP Framework giúp đỡ các bạn thúc đẩy
nhanh chóng q trình phát triển ứng dụng, giúp bạn tiết kiệm được thời gian, tăng
sự ổn định cho ứng dụng, và giảm thiểu số lần phải viết lại mã cho lập trình viên.
Ngồi ra Framework cịn giúp những người mới bắt đầu có thể xây dựng các ứng
dụng ổn định hơn nhờ việc tương tác chính xác giữa các Database, mã (PHP) và
giao diện (HTML) 1 cách riêng biệt. Điều này cho phép bạn dành nhiều thời gian để
tạo ra các ứng dụng web, hơn là phí thời gian để viết các đoạn mã lặp lại trong 1
project.
Ý tưởng chung đằng sau cách thức làm việc của 1 PHP Framework được kể đến
là Model View Controller (MVC). MVC là 1 mơ hình (kiến trúc) trong lập trình,
cho phép tách biệt các mã nghiệp vụ và giao diện thành các phần riêng biệt, điều
này đồng nghĩa với việc ta có thể chỉnh sửa chúng 1 cách riêng lẻ. Trong cụm từ
MVC thì: Model (M) có thể hiểu là phần xử lý các thao tác về nghiệp vụ (business
logic), View được hiểu là phần xử lý lớp giao diện (presentation layer), và
Controller làm nhiệm vụ lọc các request đc gọi từ user, có chức năng như 1 route:
điều chỉnh, phân luồng các yêu cầu để gọi đúng Model & View thích hợp. Về cơ
bản, MVC chia nhỏ q trình xử lý của 1 ứng dụng, vì thế nên bạn có thể làm việc

trên từng thành phần riêng lẻ, trong khi những thành phần khác sẽ không bị ảnh
hưởng tới. Thực chất, điều này giúp đỡ bạn lập trình PHP nhanh hơn và ít phức tạp
hơn.
13


1.2 Tại sao chúng ta nên sử dụng PHP Framework?
Có rất nhiều lý do khác nhau để các lập trình viên sử dụng PHP Framework,
nhưng 1 trong những lý do chính vẫn là khả năng giúp các lập trình viền tăng tốc
quá trình phát triển ứng dụng. Việc sử dụng lại các mã lệnh giống nhau trong nhiều
project sẽ giúp các bạn tiết kiệm được thời gian và công sức 1 cách đáng kể. Một
Framework sẽ cung cấp sẵn các module nền tảng cần thiết để xây dựng 1 project, vì
thế, các lập trình viên có thể tận dụng được thời gian để phát triển các ứng dụng
thực tế, hơn là mất thời gian để xây dựng lại nền tảng trên mỗi project.

1.3 Tại sao chúng ta nên sử dụng Laravel Framework?
Có hơn 20 Framework mã nguồn mở PHP khác nhau, nhưng trong số đó thì
Laravel Framework là phổ biến nhất, xếp sau là: PhaIcon, Symfony2, CodeIgniter,
Yii,… .
Nó là 1 Framework khá mới mẻ nhưng bù lại nó có "hướng dẫn sử dụng" khá
đầy đủ, rõ ràng và dễ hiểu và cùng với cộng đồng phát triển rộng lớn trên toàn thế
giới. Nếu bạn đã từng làm việc với các Framework khác hoặc chỉ là người mới bắt
đầu "chập chửng" tìm hiểu PHP Framework thì việc tiếp cận Laravel Framework
khơng phải là vấn đề khó khăn gì. Ưu điểm của nó là: Autoload theo namespace,
Các lệnh tương tác với cơ sở dữ liệu cực kỳ ngắn gọn và thân thiện, phân trang
trong laravel cực kỳ đơn giản, việc quản lý layout giờ đây thật sự giản đơn với
Laravel, dễ dàng tích hợp các thư viện của Zend và các gói bundle (giống như
moduel) vào project, có rất nhiều gói bundle đc các đồng đạo trên thế giới build sẵn
và share trên github và còn rất nhiều ưu điểm khác đang đợi các bạn khám phá… .


14


CHƯƠNG 2:
CƠ SỞ LÝ THUYẾT

2.1 Cấu trúc thư mục của Laravel
Một dự án web viết bằng Laravel có cấu trúc thư mục như sau:

Hình 2.1: Thư mục Laravel Framework

Hình 2.2: Chức năng của các thư mục chính
Như đã đề cập ở trên, thư mục /app là nguồn chính của ứng dụng, vì vậy chúng
ta cần tìm hiểu sâu về chúng:
15


Hình 2.3: Chức năng cụ thể của các thư mục con trong app
16


2.2 Cài đặt Laravel
2.2.1 Cài Composer
Chúng ta sẽ cài đặt Laravel bằng composer nên các bạn cần cài đặt composer
trước, tôi dùng window nên tôi download bản cài đặt composer của window. Bạn có
thể tải composer tại địa chỉ: />Các bạn download về và cài đặt bình thường, lưu ý ở chỗ chọn php thôi, các
bạn chỉ đường dẫn đến file php.exe trong thư mục php của XAMPP
(xampp/php/php.exe).

2.2.2 Cài Laravel

Bản Laravel mới nhất hiện tại là 4.2 (Tại thời điểm bài viết này), bản này yêu
cầu chạy trên PHP>=5.4, hiện tại tôi đang dùng XAMPP 5.6.3 nên cài được bản
mới nhất của Laravel. Nếu các bạn muốn cài đặt bản mới nhất thì chỉ cần dùng lệnh
sau:
composer create-project laravel/laravel tên-thư-mục-laravel-của-bạn
Cịn muốn nếu install các bản thấp hơn thì dùng:
composer create-project laravel/laravel tên-thư-mục-laravel-của-bạn 4.0.*
Sau khi cài đặt xong, chúng ta có cấu trúc thư mục Laravel như hình 2.1 phía
trên. Để biết được có cài Laravel thành cơng hay khơng thì chúng ta thử chạy
Laravel

bằng

cách

mở

trình

duyệt

lên

rồi



địa

chỉ


như

sau:

http://localhost/laravel_demo/public/ . Nếu thành cơng thì sẽ hiển thị hình dưới đây:

Hình 2.4: Cài đặt Laravel thành công
17


2.3 Cấu hình cơ bản cho ứng dụng
Các bạn truy cập vào app/config/app.php và chỉnh sửa lại những thông tin cơ
bản sau:
+ Chỉnh lại URL,các bạn tìm tới key url và chỉnh lại cho phù hợp với dự án của
mình nhé:
'url' => 'http://localhost/kienthuc24h/'
+ Cấu hình key,các bạn tìm tới dịng có cấu hình key mục đích của lệnh này là
tăng tính bảo mật của những cookie và session cho website. Hoặc các bạn có thể sử
dụng lệnh CMD bằng cách chỉ đường dẫn đến thư mục làm việc của bạn ở đây mình
sử dụng thư mục kienthuc24h và chạy dịng lệnh sau:
php artisan key:generate

2.4 Chạy ứng dụng đầu tiên với Laravel
- Các bạn truy cập vào file app/route.php và thêm nội dung sao vào cuối file:
Route::get(‘/dang-nhap’,function(){
echo ‘Đây là trang đăng nhập’;
});

các

bạn
thử

lên
trình
duyệt
đường
link:
http://localhost/kienthuc24h/public/dang-nhap các bạn sẽ thấy được kết quả với nội
dung sau:
Đây là trang đăng nhập

2.5 Route trong Laravel Framework
Mục đích của router là định tuyến đến những controller cụ thể nào từ phía
request của người sử dụng. Đối với những Framework khác thì khi các bạn muốn
thực hiện 1 cơng việc nào đó thường chúng ta cần xây dựng 1 controller để xử lý
phải khơng nào, nhưng trong Laravel thì các bạn hồn tồn có thể xử lý dữ liệu
ngay trong phần Router. Đây chính là điểm mạnh cũng như điểm khác biệt lớn của
Laravel Framework đối với các Framework khác.

2.5.1 Basic Routing
- Các định tuyến trong Laravel đều được viết trong app/route.php. Cú pháp
đơn giản nhất của 1 định tuyến đó là:
18


Route::method(‘URI’,’Function call back’)
Trong đó thì:
+ URI là dạng link trên url.
+ Function callback: Hàm sẽ gọi tới link URI phía trên được chạy, đây chính

là nơi các bạn có thể xử lý dữ liệu.
+ Method chính là các dạng phương thức cơ bản: post, get, put, delete, any.
- POST Route: Các thao tác lấy từ form như thêm dữ liệu.
- GET Route: Dành cho các thao tác truy cập thông thường tương đương với
request cơ bản trong PHP. Ví dụ chạy 1 link trên url.
- PUT Route: Dành cho thao tác lấy từ form nhưng là cập nhật dữ liệu.
- DELETE Route: Dành cho thao tác hành động xóa dữ liệu.
- ANY Route: là sự tổng hợp các thao tác ở trên.
Trong đó thì 2 dạng POST và GET sẽ được sử dụng nhiều nhất.
Ví dụ:
Các bạn mở file app/route.php và viết dòng code sau:
Route::get(‘/san-pham’, function(){
echo ‘Trang sản phẩm’;
});
Tiếp theo truy cập vào đường link url với đường dẫn localhost/kienthuc24h/s
an-pham (Trong đó thì kienthuc24h chính là thư mục dự án). Khi các bạn chạy link
này lập tức trong Route sẽ kiểm tra và gọi đúng tới hàm callback. Sau khi chạy
trang này các bạn sẽ nhận được thông báo như ý muốn.
- Ngồi ra các bạn cịn có thể tùy chỉnh rất nhiều trong phần Route này theo
cú pháp:
Route::method(‘Tên định danh’,’Tham số’);
Ví dụ:
Route::get(“san-pham”,”ProductController@list”);
Với ví dụ trên có nghĩa là khi chúng ta chạy link san-pham lúc này bộ điều
hướng sẽ gọi tới controller là ProducController và phương thức (action) là list.
19


2.5.2 Route Parameters
- Trong trường hợp các bạn muốn gửi kèm theo tham số cho bộ định tuyến

thì chỉ cần khai báo theo dạng{Tên tham số} và trong hàm callback chúng ta coi nó
như tham số trong hàm bình thường.
Ví dụ:
Route::get(‘/san-pham/{name}/{id}’, function($name,$id){
echo ‘Bạn đang xem sản phẩm’.$name.’có ID = ’.&id;
});
Tiếp theo bạn truy cập vào đường link localhost/kienthuc24h/sanpham/nokia520/1 và kết quả sẽ là:
Bạn đang xem sản phẩm nokia520 có ID = 1
- Ngồi ra các bạn hồn tồn có thể kiểm tra dữ liệu của tham số truyền vào
bằng cách sử dụng thêm phương thức where().
Ví dụ:
Route::get(‘/san-pham/{name}/{id}’, function($name,$id){
echo ‘Bạn đang xem sản phẩm’.$name.’có ID = ’.&id;
})->where(array(‘name’=>’[a-z]+’,’id’=>’[0-9]+’));
Ở trường hợp trên ta xét với điều kiện kiểm tra sẽ là sản phẩm(name) sẽ là
các ký tự thường từ a-z còn id sẽ là các số tự nhiên từ 0-9.

2.5.3 Route Filters
- Đây chính là phần bộ lọc định tuyến, nó cho phép chúng ta có thể kiểm tra
trước khi cập nhật vào đường dẫn đó (URI). Ứng dụng trong thực tế là kiểm tra
trạng thái đăng nhập trước khi cho phép truy cập vào 1 trang nào đó.
- Filter chia ra 2 loại là before và after.
+ Before: Nghĩa là request trước khi tới routing.
20


+ After: Nghĩa là request sau khi tới routing.
Trên thực tế thì Before thường được sử dụng nhiều hơn.
- Cú pháp cơ bản:
Route::filter(“tên filter”, function(){

// code xử lý
});
Ví dụ:
Route:: filter(“checklogin”, function(){
if(session::get(‘login’)!=1){
return Redirect::to(“/dang-nhap”);
}
});
Đoạn code trên mình xây dựng 1Filter có tên là checklogin đang thực hiện
kiểm tra xem biến session login có bằng 1, ý định của mình ở đây là kiểm tra xem
đã đăng nhập chưa. Nếu chưa đăng nhập thì lập tức chuyển về trang đăng nhập.
Tiếp theo ta có đoạn code:
Route::get(‘/them-san-pham’, array(“before”=>”checklogin”,”uses”=>
”ProductController@store”));
Với đoạn code trên mình đã thêm vào khóa before chỉ tới checklogin. Chính
là filter ta đã thiết lập trước đó, và đẩy nó sang controller ProductController với
action là store dựa vào khóa uses.
- Như vậy, khi các bạn truy cập vào link them-san-pham thì lúc này nó sẽ
kiểm tra Filter checklogin trước.
- Với bất kỳ link nào đó mà bạn muốn kiểm tra đăng nhập thì chỉ cần sử
dụng “before”=>”checklogin” là được.
21


- Filter trong Laravel Framework còn cho phép chúng ta truyền giá trị vào
dựa vào cú pháp sau:
Route::filter(‘Tên filter’, function($route, $request,$value){
// code xử lý, kiểm tra dữ liệu
});
+ Như các bạn thấy tham số thứ 3 $value chính là giá trị mà chúng ta sẽ

truyền vào, ví dụ:
Route::filter(“checkId”, function($route, $request,$value){
// Xử lý dữ liệu
if($value<=0)
{
echo ‘Id khong hop le’;
}
});
Route::get(‘/check-id’,array(“before”=>”checkId:-1”,”uses”=>”
DemoController@checkid“));
+ Như vậy khi các bạn chạy link check-id lúc này sẽ gọi tới Filter checkId để
kiểm tra, và giá trị mình gửi sang bên Filter đó chính là -1(checkId:-1).
- Qua những ví dụ này các bạn thấy được ý nghĩa và sức mạnh của filter
trong thực tế phải không nào. Với filter ta có thể tối giản code ở mức cao nhất và tái
sử dụng vô cùng đơn giản.

2.5.4 Name Route

- Đặt tên cho các Route nhằm sử dụng linh hoạt cho ứng dụng. Dễ dàng lấy
được thông tin của Route thông qua tên này.
22


Ví dụ:
Route::get(‘/san-pham/{name}/{id}’, array(‘as’=>’product’,’uses’=>Produ
ctController@view));
$url= URL::route(“product”,array(‘nokia520’,’1’));
echo “<a href=’$url’>Chi tiết sản phẩm</a>”;
+ as: Là tên của route (product).
+ uses: Route này sẽ sử dụng controller (ProductController) nào và action

(view) nào.
+ Thư viện URL, sử dụng phương thức route với cú pháp sau:
URL::route(“tên route”, array(‘chứa đối số’));
Sau khi chạy đoạn code trên chúng ta sẽ có $url=/san-pham/nokia520/1.
- Tiếp đến ta xây dựng 1 controller với nội dung sau:
class ProductController extends BaseController{
public function view($name,$id)
{
echo ‘Bạn đang xem sản phẩm’.$name.’có ID = ’.$id;
}
}
và kết quả sẽ hiển thị ra như sau:
Bạn đang xem sản phẩm nokia520 có ID = 1

23


2.5.5 Route Groups
- Route Groups sẽ giúp chúng ta có thể nhóm các Route mà cần thơng qua bộ
lọc định tuyến nào đó (Filter). Như với ví dụ trên chúng ta có Filter là checklogin,
giả sử chúng ta có rất nhiều trang cần sử dụng bộ lọc kiểm tra đăng nhập này, không
lẻ chúng ta phải viết tất cả các khóa before. Nhưng khi sử dụng Route Groups các
bạn chỉ cần viết 1 lần khóa before cho nhóm đó.
Ví dụ:
Route::group(array(“before”=>”checklogin”), function(){
Route::get(‘/them-san-pham’,array(“uses”=>”ProductControl
ler@store”));
Route::get(‘/cap-nhat-san-pham’,array(“uses”=>”Product
Controller@update”));

Route::get(‘/them-danh-muc’,array(“uses”=>”CatalogControl
ler@store”));
Route::get(‘/cap-nhat-danh-muc’,array(“uses”=>”CatalogControl
ler@update”));
});
+ Như vậy là khi các bạn truy cập vào các link ở trên thì sẽ được thơng qua
Filter checklogin kiểm trước.

2.5.6 Route Prefixing
- Gồm 1 số các định tuyến mà đằng trước nó có tiền tố.
Ví dụ:
localhost/kienthuc24h/admin/them-san-pham
localhost/kienthuc24h/admin/cap-nhat-san-pham

24


localhost/kienthuc24h/admin/them-danh-muc
localhost/kienthuc24h/admin/cap-nhat-danh-muc
- Với các đường link trên thì các bạn thấy trước nó đều có tiền tố (Prefix) là
admin phải khơng nào. Lúc này chúng ta hồn tồn có thể cho nó vào 1 nhóm có
tiền tố admin và thực hiện kiểm tra.
Ví dụ:
Route::group(array(“prefix”=>”admin”,”before”=>”checklogin”), function(){
// phần sử lý nằm ở đây.
});
Với ví dụ trên thì mình đang nhóm tất cả các link có tiền tố là admin, và
trước khi truy cập vào những link này mình sẽ thực hiện gọi tới Filter checklogin để
kiểm tra xem đã đăng nhập chưa.


2.6 View trong Laravel Framework
- Như đã đề cập ở trên thì thư mục view dùng để chứa các file mẫu như html để
tương tác với người sử dụng nằm trong thư mục (app/view).
- Để sử dụng view ta có thể sử dụng như sau:
return View::make("Tên",Đối số nếu có);
Ví dụ trong app/route.php ta có đường dẫn sau:
Route::get("name",function(){
return View::make("hoten"); // gọi file view có tên là: app/views/hoten.php
});
<!-- View stored in app/views/hoten.php -->
<html>
<body>

Hello, <?php echo $name; ?>


</body>
25


×