Tải bản đầy đủ (.pdf) (62 trang)

Xây dựng hệ thống quản lý và lưu trữ tài liệu trực tuyến bằng framework laravel

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 (4.54 MB, 62 trang )

LỜI CẢM ƠN
Em xin gửi lời cảm ơn chân thành tới các thầy cô của trường Đại học Công
nghệ Thông tin và Truyền thông – Đại học Thái Nguyên, đặc biệt là các thầy cô
Khoa Công Nghệ Thông Tin của trường đã tạo điều kiện cho em được học tập và
thực hiện đồ án tốt nghiệp.
Em xin chân thành cám ơn thầy Quách Xuân Trưởng người đã tận tình hướng
dẫn, giúp đỡ em hoàn thành đồ án tốt nghiệp này.
Trong quá trình hoàn thành đồ án tốt nghiệp này, khó tránh khỏi sai sót, em
rất mong các thầy, cô bỏ qua. Đồng thời do trình độ lý luận cũng như kinh nghiệm
thực tiễn còn hạn chế nên đồ án tốt nghiệp này không thể tránh khỏi những thiếu
sót, em rất mong nhận được ý kiến đóng góp của quý thầy, cô để em hoàn thành tốt
đồ án tốt nghiệp này.
Em xin chân thành cảm ơn!

Thái Nguyên, ngày 28 tháng 3 năm 2017
Sinh viên thực hiện

Hoàng
Nguyễn Huy Hoàng


LỜI CAM ĐOAN
Để hoàn thành đồ án tốt nghiệp với tên đề tài là: “Xây dựng hệ thống quản
lý và lưu trữ tài liệu trực tuyến bằng Framework Laravel” đúng thời gian quy định
và đáp ứng được yêu cầu và tính cấp thiết của đề tài đặt ra, em đã cố gắng tìm
hiểu, học hỏi, tích lũy và tổng hợp kiến thức đã học. Em đã tham khảo một số tài
liệu đã nêu trong phần “tài liệu tham khảo” nhưng không sao chép nội dung từ bất
kỳ đồ án, hay sản phẩm tương tự nào khác. Toàn bộ nội dung đồ án đều do em tự
tìm hiểu, nghiên cứu và xây dựng nên dưới sự hướng dẫn của thầy giáo Quách
Xuân Trưởng.
Em xin cam đoan những lời khai trên là hoàn toàn đúng sự thật, mọi thông


tin sai lệch em xin hoàn toàn chịu trách nhiệm.

Thái Nguyên, ngày 28 tháng 3 năm 2017
Sinh viên thực hiện

Hoàng
Nguyễn Huy Hoàng


MỤC LỤC
LỜI NÓI ĐẦU ...................................................................................................... 1
CHƯƠNG 1: TỔNG QUAN VỀ LARAVEL FRAMEWORK .............................. 2
1.1. Giới thiệu về Laravel Framework ............................................................... 2
1.1.1. Khái niệm ............................................................................................. 2
1.1.2. Lịch sử phát triển của Laravel Framework ........................................... 2
1.1.3. Ưu điểm của Laravel ............................................................................ 4
1.2. Cài đặt ........................................................................................................ 4
1.2.1. Yêu cầu hệ thống .................................................................................. 4
1.2.2. Hướng dẫn cài đặt ................................................................................ 4
1.3. Mô hình MVC trong Laravel Framework .................................................... 7
1.4. Hệ quản trị cơ sở dữ liệu ........................................................................... 10
1.5. Các thành phần chính trong Laravel Framework ....................................... 11
1.5.1. Routing ............................................................................................... 11
1.5.2. View ................................................................................................... 13
1.5.3. Controller........................................................................................... 14
1.5.4. Middleware ........................................................................................ 15
1.6. Thao tác với cơ sở dữ liệu ......................................................................... 17
1.6.1. Giới thiệu ........................................................................................... 18
1.6.2. Cấu hình............................................................................................. 19
1.6.3. Query builder ..................................................................................... 19

1.7. Eloquent ORM.......................................................................................... 23
CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG .................................... 26
2.1. Khảo sát thực trạng ................................................................................... 26
2.2. Phân tích hệ thống .................................................................................... 26
2.2.1. Yêu cầu bài toán ................................................................................. 26
2.2.2. Mô tả bài toán .................................................................................... 27
2.3. Thiết kế hệ thống ...................................................................................... 28
2.3.1. Tác nhân ............................................................................................ 28
2.3.2. Lược đồ chức năng ............................................................................. 29


2.3.3. Mô tả chi tiết use case ........................................................................ 30
2.3.4. Các biểu đồ trình tự............................................................................ 32
2.3.5. Biểu đồ lớp ......................................................................................... 35
2.3.6. Thiết kế cơ sở dữ liệu ......................................................................... 35
2.3.7. Bảng sơ đồ thực thể và các liên kết..................................................... 36
2.3.8. Danh sách chi tiết thuộc tính các bảng dữ liệu ................................... 36
CHƯƠNG 3: CÀI ĐẶT HỆ THỐNG QUẢN LÝ VÀ LƯU TRỮ TÀI LIỆU
TRỰC TUYẾN ................................................................................................... 42
3.1. Thiết kế giao diện dành cho người dùng.................................................... 42
3.2. Thiết kế giao diện dành cho quản trị viên .................................................. 49
KẾT LUẬN ........................................................................................................ 57
TÀI LIỆU THAM KHẢO ................................................................................... 58


LỜI NÓI ĐẦU
Trong thời kỳ công nghiệp hóa – hiện đại hóa ngày nay, với sự phát triển
của nền kinh tế tri thức, đặc biệt là sự phát triển mạnh mẽ của Internet mà qua đó
mọi người có thể dễ dàng tìm kiếm, khai thác và trao đổi thông tin một cách nhanh
nhất để phục vụ nhu cầu học tập, nghiên cứu của mình.

Để đáp ứng được yêu cầu thiết yếu của xu hướng phát triển ngành công
nghệ thông tin hiện nay, cũng như đáp ứng nhu cầu tìm kiếm thông tin và tra cứu
tài liệu trực tuyến của người dùng, đề tài đã tập trung đi sâu vào nghiên cứu, tìm
hiểu về Framework Laravel và ứng dụng xây dựng hệ thống quản lý và lưu trữ tài
liệu trực tuyến. Song song với đó đề tài đi sâu vào tìm hiểu PHP, được xem là
ngôn ngữ thông dụng để viết và phát triển các website thương mại tốt. Ngoài ra,
PHP có rất nhiều framework hỗ trợ và giúp cho việc xây dựng và phát triển web
trở nên nhẹ nhàng cũng như hiệu quả hơn. Một trong những framework được đánh
giá cao nhất và số lượng lập trình viên ưa chuộng nhiều nhất đó là Laravel
Framework. Ngay từ khi ra mắt, Laravel đã thu hút không ít sự chú ý của các lập
trình viên bởi sự tinh tế của nó. Và sự tinh tế của Laravel ở đây đó là bắt kịp được
xu hướng công nghệ mà điểm nhấn là các tính năng mới trong các phiên bản PHP
5.6 trở lên. Theo thống kê năm 2014 thì Framework Laravel được sử dụng nhiều
nhất và có tỷ lệ chênh lệch khá nhiều so với các framework hiện tại và theo sau đó
là Phalcon, Symfony2. Việc nghiên cứu, tìm hiểu về Framework khá mới mẻ này
là rất cần thiết và phù hợp với xu thế hiện đại. Chính vì những điều này, em đã
chọn đề tài: “Xây dựng hệ thống quản lý và lưu trữ tài liệu trực tuyến bằng
Framework Laravel” làm đề tài báo cáo đồ án tốt nghiệp.
Đề tài này được trình bày qua ba chương chính:
CHƯƠNG 1: TỔNG QUAN VỀ LARAVEL FRAMEWORK
CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
CHƯƠNG 3: CÀI ĐẶT HỆ THỐNG QUẢN LÝ VÀ LƯU TRỮ TÀI LIỆU
TRỰC TUYẾN
Do thời gian và kiến thức có hạn nên đề tài thực tập này của em còn nhiều
thiếu sót, kính mong được sự góp ý và chỉ bảo từ các thầy cô và các bạn!
1


CHƯƠNG 1: TỔNG QUAN VỀ LARAVEL FRAMEWORK
1.1. Giới thiệu về Laravel Framework

1.1.1. Khái niệm
Laravel là một nền tảng ứng dụng web mã nguồn mở được viết bằng ngôn
ngữ PHP dựa theo mô hình MVC. Nó là framework khá mới mẻ, ra đời vào tháng
04-2011 và cha đẻ của nó Taylor Otwell. Việc tiếp cận và sử dụng Laravel cũng
giống như các framework khác không phải là vấn đề quá khó khăn. Các nhà phát
triển framework Laravel đã xây dựng hệ thống hướng dẫn sử dụng khá hoàn chỉnh
và đầy đủ. Nó giúp cho các lập trình viên tiết kiệm thời gian, công sức và chi phí
để xây dựng một website.

Hình 1.1. Tỉ lệ người dùng laravel so với các framework khác năm 2015
1.1.2. Lịch sử phát triển của Laravel Framework
Bản Laravel beta đầu tiên được phát hành vào ngày 9/6/2011, tiếp đó là
Laravel 1 phát hành trong cùng tháng. Laravel 1 bao gồm các tính năng như xác
thực, bản địa hóa, model, view, session, định tuyến và các cơ cấu khác, nhưng vẫn
còn thiếu controller, điều này làm nó chưa thật sự là một MVC framework đúng
nghĩa.
2


Laravel 2 được phát hành vào tháng 9 năm 2011, mang đến nhiều cải tiến từ
tác giả và cộng đồng. Tính năng đáng kể bao gồm hỗ trợ controller, điều này thực
sự biến Laravel 2 thành một MVC framework hoàn chỉnh, hỗ trợ Inversion of
Control (IoC), hệ thống template Blade. Bên cạnh đó, có một nhược điểm là hỗ trợ
cho các gói của nhà phát triển bên thứ 3 bị gỡ bỏ.
Laravel 3 được phát hành vào tháng 2 năm 2012, với rất nhiều tính năng
mới bao gồm giao diện dòng lệnh (CLI) tên “Artisan”, hỗ trợ nhiều hơn cho hệ
thống quản trị cơ sở dữ liệu, chức năng ánh xạ cơ sở dữ liệu Migration, hỗ trợ “bắt
sự kiện” trong ứng dụng, và hệ thống quản lý gói gọi là “Bundles”. Lượng người
dùng và sự phổ biến tăng trưởng mạnh kể từ phiên bản Laravel 3.
Laravel 4, tên mã “Illuminate”, được phát hành vào tháng 5 năm 2013. Lần

này thực sự là sự lột xác của Laravel framework, di chuyển và tái cấu trúc các gói
hỗ trợ vào một tập được phân phối thông qua Composer, một chương trình quản lý
gói thư viện phụ thuộc độc lập của PHP. Bố trí mới như vậy giúp khả năng mở
rộng của Laravel 4 tốt hơn nhiều so với các phiên bản trước. Ra mắt lịch phát hành
chính thức sáu tháng một phiên bản nâng cấp nhỏ. Các tính năng khác trong
Laravel 4 bao gồm tạo và thêm dữ liệu mẫu (database seeding), hỗ trợ các kiểu gửi
mail, và hỗ trợ “xóa mềm” (soft-delete: record bị lọc khỏi các truy vấn từ Eloquent
mà không thực sự xóa hẳn khỏi DB).
Laravel 5 được phát hành trong tháng 2 năm 2015, như một kết quả thay đổi
đáng kể cho việc kết thúc vòng đời nâng cấp Laravel lên 4.3. Bên cạnh một loạt
tính năng mới và các cải tiến như hiện tại, Laravel 5 cũng giới thiệu cấu trúc cây
thư mục nội bộ cho phát triển ứng dụng mới. Những tính năng mới của Laravel 5
bao gồm hỗ trợ lập lịch định kỳ thực hiện nhiệm vụ thông qua một gói tên là
“Scheduler”, một lớp trừu tượng gọi là “Flysystem” cho phép điều khiển việc lưu
trữ từ xa đơn giản như lưu trữ trên máy local - dễ thấy nhất là mặc định hỗ trợ dịch
vụ Amazone S3, cải tiến quản lý assets thông qua “Elixir”, cũng như đơn giản hóa
quản lý xác thực với các dịch vụ bên ngoài bằng gói “Socialite”.
Laravel 5.1 phát hành vào tháng 6 năm 2015, là bản phát hành đầu tiên
nhận được hỗ trợ dài hạng (LTS) với một kết hoạch fix bug lên tới 2 năm vào hỗ
trợ vá lỗi bảo mật lên tới 3 năm.
3


1.1.3. Ưu điểm của Laravel
Được thiết kế theo mô hình Model-View-Controller: Mô hình MVC giúp
tách thành phần hiển thị giao diện (presentation) và xử lý (business logic) của một
phần mềm thành những thành phần độc lập, từ đó giúp cho việc thiết kế, xử lý và
bảo trì mã nguồn dễ dàng, đồng thời tăng khả năng mở rộng của phần mềm.
Laravel vận dụng mô hình này trong thiết kế, giúp tách biệt các tập tin giao diện
với các tập tin xử lý dữ liệu, nâng cao khả năng quản lý và dễ bảo trì. Hệ thống tài

liệu (document) đã được làm lại một cách cẩn thận và rõ ràng hơn. Mỗi trang tài
liệu đã được dành vô số thời gian tỉ mỉ để chăm chút cẩn thận. Điều này cũng giúp
cho người dùng sử dụng nhanh chóng nắm được cách sử dụng Laravel, từ đó sẽ có
nhiều người sử dụng nó hơn. Hệ thống tài liệu đi kèm với khả năng tìm kiếm realtime và auto complete.Việc quản lý layout thật sự giản đơn. 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ộng đồng mạng build sẵn và chia sẻ trên Internet. Laravel hỗ trợ
nhiều cách viết để viết ngắn gọn nhất có thể và nhiều cách viết khác nhau: Như
Query Builder và Eloquent.
1.2. Cài đặt
1.2.1. Yêu cầu hệ thống
Trước tiên khi cài đặt Laravel, cần phải đảm bảo rằng Apache, PHP,
MySQL đã được cài đặt. Framework Lavarel 5.3 có một vài yêu cầu về hệ thống
cụ thể như sau:
- PHP >= 5.5.9
- OpenSSL PHP Extension
- PDO PHP Extension
- Mbstring PHP Extension
- Tokenizer PHP Extension
1.2.2. Hướng dẫn cài đặt
Để cài Laravel, ta sẽ thực hiện theo 2 bước:
Lưu ý: máy tính của bạn phải được cài sẵn Xampp hoặc Wamp.
4


- Bước 1: Cài đặt Composer
Vào đường dẫn: để download
composer. Sau khi download về, chúng ta mở file composer-setup.exe lên để cài
đặt. Các bước cài đặt khá đơn giản các bạn chỉ cần ấn next. Trong quá trình cài đặt
bạn sẽ được composer báo chọn đến file php.exe trong xampp hoặc wamp như
hình dưới.


Sau khi cài đặt xong, composer có yêu cầu bạn làm các bước sau:
1. Mở cmd.exe
2. Đóng tất cả các cửa sổ windows lại (bao gồm cả cmd.exe)
3. Mở lại cmd.exe
4. Đóng lại rồi logout ra khỏi windows, sau đó login lại.
5. Cuối cùng ta bật cmd.exe lên là xong.

5


- Bước 2: Cài đặt Laravel
Khởi động cmd, truy cập vào thư mục muốn cài đặt Laravel. Tiếp đến các
bạn chạy lệnh: “composer create-project –prefer-dist laravel/laravel {Tên project
Laravel}” để composer tự động tải phiên bản laravel mới nhất về. (ở ví dụ này tên
project là: MyLaravel)

Hình 1.2. Hình ảnh sau khi composer download laravel về thành công
Bước tiếp theo các bạn vào địa chỉ: http://localhost/MyLaravel/public

Hình 1.3. Kết quả chạy Laravel thành công
6


1.3. Mô hình MVC trong Laravel Framework
Viết tắt của MVC là: Model, View, Controller.
Trong đó:
- Model: thành phần chứa dữ liệu.
- View: thành phần hiển thị giao diện trên màn hình.
- Controller: thành phần kiểm soát model và điều khiển view để hiển

thị cho người dùng.

Hình 1.4. Cấu trúc mô hình MVC
 Route:
Nhiệm vụ chính 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. (file routes của Laravel 5.3 nằm ở thư mục
Routes/web.php).

1.5. Thư mục chứa file route
 Controller:
Khi được Router gọi, controller sẽ tiếp nhận lời gọi và xử lý.

7


Nó có thể trả lại trực tiếp dạng text (trả lại một chuỗi bất kỳ, mở rộng ra thì
có thể là xml, json, html, v.v...).
Nó có thể gọi View: Tạo và truyền hoặc không truyền tham số cho view,
thiết lập master layout.
Nó có thể gọi các hàm của Model để tương tác với cơ sở dữ liệu.
Nhiều trường hợp thì cách làm chung là controller sẽ gọi các hàm của
model, ghi vào biến global hay local tùy bạn, sau đó phân tích và gọi view tương
ứng, đáp lại người dùng.
Mỗi controller là một file nằm tại thư mục
app/Http/Controller(UserController.php, Controller.php…)

1.6. Thư mục chứa các file controller
 View:
Để chỉ ra layout nào sẽ được dùng thì trong controller ta thêm vào
Return view ‘index’;

Trong view chúng ta có thể có sub view, dùng @include, chi tiết xem tại
.

8


Mỗi view là một folder gồm nhiều file (register.blade.php,
login.blade.php,...) nằm tại địa chỉ resources/views.

1.7. Thư mục chứa các file views
 Model
Chạy trực tiếp các câu SQL.
Class DB của Laravel hỗ trợ select, insert, update, delete
Ví dụ:
$results = DB::select('select * from users where id = ?', array(1));
DB::insert('insert into users (id, name) values (?, ?)', array(1, 'Dayle'));
DB::update('update users set votes = 100 where name = ?',
array('John'));
DB::delete('delete from users');
Với các câu lệnh khác thì ta sẽ dử dụng hàm statement của class DB.
Ví dụ:
DB::statement('drop table users');
Để thực hiện dạng giao tác thì class DB cũng hỗ trợ:
DB::transaction(function(){
DB::table('users')->update(array('votes' => 1));
DB::table('posts')->delete();
});
9



Mỗi một model là một file nằm trong thư mục app (User.php,
DanhMuc.php,...)

1.8. Thư mục chứa các file model
1.4. Hệ quản trị cơ sở dữ liệu
MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới
và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì
MySQL là cơ sở dữ liệu tốc độ cao, đơn giải, linh hoạt, ổn định và dễ sử dụng, có
tính khả chuyển, đặc biệt là miễn phí hoặc tốn rất ít phí, hoạt động trên nhiều hệ
điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh. Với tốc độ và tính
bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên
internet. MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang
chủ. Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản dòng
Windows, Linux, Mac bản OS Win32 cho các hệ điều hành X, Unix, FreeBSD,
NetBSD, NovellNetWare, SGI Irix, Solaris, SunOS,...
MySQL là một trong những ví dụ rất cơ bản về hệ quản trị cơ sở dữ liệu
quan hệ sử dụng ngôn ngữ truy vấn có cấu trúc (SQL). MySQL được sử dụng cho
việc bổ trợ PHP, Perl, và nhiều ngôn ngữ khác, nó làm nơi lưu trữ những thông tin
trên các trang web viết bằng PHP hay Perl.

10


Hình 1.9. Giao diện phpMyAdmin
Việc kết hợp CSDL với ứng dụng web, dữ liệu xử lý do php sẽ tương tác
với CSDL như lấy dữ liệu, làm nội dung trang web từ trạng thái tĩnh sang động. Sự
linh hoạt này là cốt lõi của một ứng dụng web động (dynamic webapplication).
1.5. Các thành phần chính trong Laravel Framework
1.5.1. Routing
Mục đích chính của route trong Laravel đó là dùng để định nghĩa các mối

quan hệ giữa các đường dẫn (URL), các liên kết (Link). Khi một liên kết được tạo
ra bằng cách sử dụng tên của routes, thì một định danh liên kết thống nhất sẽ được
tạo ra bởi laravel.
Nói một cách dễ hiểu thì route trong laravel chính là việc viết lại đường dẫn
của ứng dụng, tương đương với htaccess trong các website truyền thống, laravel có
thể hiểu được cách viết này và sử dụng nó để gọi các đối tượng, phương thức cần
thiết.
Trong Laravel 5.3, file routes.php được đặt tại: Routes/web.php. Các định
tuyến trong Laravel có cú pháp đơn giản như sau:

Hình 1.10. Cú pháp route
Ví dụ cơ bản về route:

11


Hình 1.11. Ví dụ về route
Khi người dùng

nhập

vào

thanh URL

của

trình duyệt web

‘localhost/laravel/’ (trong đó laravel là thư mục của dự án) thì route sẽ gọi đúng tới

hàm callback và hiển thị trang welcome trên màn hình.
Ngoài ra còn có các hàm get(), post(), put(), delete() chính là các HTTP
Methods dùng cho route.

Hình 1.12. Các hàm trong route
Trong đó:
- 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.
- POST route – Thao tác lấy từ form như thêm dữ liệu.
- PUT route – Dành cho thao tác lấy từ form nhưng chuyên về cập nhật dữ
liệu.
12


- DELETE route – Dành cho các thao tác thực thi hành động xóa dữ liệu.
Với cú pháp đơn giản, route đã có thể được đặt tên và sử dụng một cách dễ
dàng.
Ví dụ về đặt tên cho route sử dụng từ khóa ‘as’:

Hình 1.13. Đặt tên cho route
Trong trường hợp này, khi muốn quay về trang chủ route trở về trang chủ
với tên là ‘homepage’ sẽ được gọi.

Hình 1.14. Gọi route
Việc đặt tên giúp tạo URL như mong muốn một cách dễ dàng. Khi lượng
route trên website tăng lên, các URI/URL dài và khó nhớ, việc đặt tên sẽ hiệu quả
hơn nhiều so với việc cộng chuỗi để tạo ra các URI/URL mong muốn.
1.5.2. View
Mục đích của Views đó là chứa các mã html dùng để hiển thị nội dung được
chỉ định bởi các Controllers. Trong Laravel 5.3, các views được đặt tại:

resources/views. Để sử dụng được View câu lệnh với cú pháp sau sẽ được gọi:

Hình 1.15. Cú pháp gọi view
Ví dụ về View:

Hình 1.16. Ví dụ về view
Sau đó vào thư mục resources/views tạo một view có tên là welcome.php
với nội dung là ‘Hello world – Welcome to Laravel’ và khi chạy lại đường liên kết
13


‘localhost/laravel/welcome’ thì dòng chữ ‘Hello world – Welcome to Laravel’ sẽ
xuất hiện trên màn hình. Công việc tiếp theo sẽ là truyền đối số cho view. Có 3
cách cơ bản để thực thi việc truyền đối số vào view.
Cách 1 – Sử dụng đối số.
Route::get(‘/welcome’, function() {
$username = ‘Hoang’;
Return view(‘welcome’, $username);
});
Cách 2 – Truyền qua phương thức with()
Route::get(‘/welcome’, function(){
$username = ‘Hoang’;
Return view(‘welcome’)->with(‘username’, $username);
});
Cách 3 – Sử dụng hàm compact() trong PHP
Route::get(‘/welcome’, function() {
$username = ‘Hoang’;
Return view(‘welcome’, compact(‘username’));
});
1.5.3. Controller

Thay vì định nghĩa tất cả các yêu cầu về logic trong một file routes.php duy
nhất, thì Controller dùng để tổ chức nhóm tất cả các logic này trong class
Controller để tiện xử lý.
Một Controller được định nghĩa là một lớp, chứa một hoặc nhiều phương
thức, hay còn được biết đến đó là hành động (action). Trong một dự án, route và
controller sẽ được ghép đôi để thực thi một phương thức nhất định.
Trong Laravel 5.3 thư mục chứa các controllers nằm tại:
app/Http/Controllers.
Ví dụ cơ bản về Controller:

Hình 1.17. Ví dụ controller
14


Trong ví dụ này, khi người dùng truy cập vào ‘localhost/laravel/’ thì
Controller có tên là WelcomeController được gọi với phương thức là index (dấu @
dùng để ngăn cách giữa tên Controller và phương thức bên trong nó).
Ngoài ra việc đặt tên cho route vẫn có thể được kết hợp để chỉ định đến một
controller nhất định thông qua cú pháp sau:

Hình 1.18. Kết hợp giữa đặt tên route và sử dụng controller
Trong đó, một mảng sẽ được sử dụng, truyền vào tên của route thông qua từ
khóa ‘as’ và chỉ định đến controller nhất định thông qua từ khóa ‘uses’.
Ví dụ kết hợp giữa đặt tên cho Route và sử dụng Controller:

Hình 1.19. Ví dụ kết hợp giữa đặt tên route và sử dụng controller
Khi người dùng gọi một route có tên là welcome, thì Controller có tên là
WelcomeController sẽ được gọi với phương thức là index. Cách thực hiện của
Controller trong trường hợp này sẽ tương tự như cách cơ bản. Tuy nhiên, khi kết
hợp với đặt tên cho route, lập trình viên sẽ dễ phân biệt route nào sử dụng

controller nào và tốn ít thời gian tìm kiếm hơn nếu dự án có nhiều route.
1.5.4. Middleware
Một điểm nỗi bật nữa trong Laravel 5.x đó là nếu như Laravel 4 có bộ lọc
Filter thì trong Laravel 5.x bộ lọc filter đã được thay thế bằng Middleware. Tuy
nhiên nếu một số lập trình viên đã quen dùng với filter thì họ vẫn có thể sử dụng
nó trong Laravel 5.x. Để có thể giải thích một cách cụ thể và dễ hiểu về
Middleware trong Laravel 5, ta có thể thông qua hình sau:
15


Hình 1.20. Mô tả hoạt động của Middleware
Nếu trong một ứng dụng web, bao gồm các routes, controllers, các logic
nghiệp vụ, là khu vực màu xanh lá cây (App). Thì khi đó request của người dùng
sẽ phải đi qua nhiều lớp của middleware mới có thể đến được ứng dụng, và từ đó
sẽ phải đi qua một lược các lớp middleware khác để phản hồi (response) lại. Bất kỳ
lớp middleware nào cũng có thể hoạt động trước khi request đi vào ứng dụng, hoặc
sau khi request đã qua ứng dụng của ta, hoặc có thể cả hai trường hợp trên đều có
thể hoạt động.
Tóm lại, middleware là một tập các lớp bao bọc xung quanh ứng dụng, giúp
cho việc kiểm soát các requests và responses được diễn ra mà không cần nằm
trong phần logic của chương trình.
Middleware hoạt động dựa vào các bước sau. Trước tiên, request sẽ phải
qua bộ lọc này để kiểm tra, xử lý gì đó trước khi được gửi tới phần code đã khai
báo trong route, hay trong controller. Trong trường hợp này, dễ hiểu nhất đó là
việc kiểm tra người dùng đăng nhập rồi mới có thể truy xuất đến các trang nhất
định.
Để chia sẻ middleware giữa một nhóm route, từ khóa ‘middleware’ sẽ được
sử dụng với cú pháp sau:

16



Hình 1.21. Sử dụng middleware
Trong trường hợp này, việc gom nhóm các route lại với nhau bằng cú pháp
Route::group sẽ được thực thi và sử dụng một middleware có tên là ‘auth’ trong
lớp Kernel.php tại đường dẫn app/Http/Kernel.php. Middleware này dùng để kiểm
tra xem người dùng đã đăng nhập hay chưa. Nếu đăng nhập rồi thì mới được
quyền truy cập các route nằm trong middleware đó.
Ví dụ sử dụng middleware để kiểm soát việc viết comment và thanh toán
giỏ hàng (checkout):

Hình 1.22. Ví dụ sử dụng middleware
1.6. Thao tác với cơ sở dữ liệu
Việc kết nối và truy vấn tới cơ sở dữ liệu đối với Laravel là vô cùng đơn
giản. Laravel đã hỗ trợ đến mức tối đa cho việc này và giúp cho các lập trình viên
không còn cảm thấy khó khăn trong việc chạy câu lệnh hay truy xuất dữ liệu trong
database nữa.

17


1.6.1. Giới thiệu
Ví trí file cấu hình nằm tại vị trí config/database.php.
Trong file này, lập trình viên có thể lựa chọn cơ sở dữ liệu mà ứng dụng sẽ
làm việc trên đó. Hiện tại Laravel hỗ trợ những hệ thống cơ sở dữ liệu phổ biến
sau: MySQL, Postgres, SQLite, và SQL Server. Sau đây là các phần cấu hình cho
từng loại hệ quản trị cơ sở dữ liệu:
- MySQL

- SQLite


- Postgres

- SQL Server
18


1.6.2. Cấu hình
Sau khi mở file config/database.php, tìm đến dòng sau và điền các thông tin
cần thiết để kết nối dữ liệu.

Một vài mục cần lưu ý đối với đoạn cấu hình trên:
- Host – Cấu hình của host.
- Database – Tên database.
- Username – Tên username đăng nhập vào cơ sở dữ liệu.
- Password – Password của cơ sở dữ liệu.
1.6.3. Query builder
Query builder cung cấp cho các lập trình viên rất nhiều tiện ích và giúp cho
việc thao tác với cơ sở dữ liệu một cách thuận lợi hơn, với những câu lệnh truy vấn
đơn giản, thân thiện để tạo và thực thi các câu truy vấn từ cơ sở dữ liệu. Query
builder được dùng để thực thi hầu hết những thao tác về cơ sở dữ liệu trong ứng
dụng. Hơn nữa, Query builder còn sử dụng PDO (PHP Data Object) nhằm bảo vệ
19


ứng dụng và tránh các lỗi về SQL Injection. Query builder xây dựng lớp DB để
thực hiện các câu truy vấn một cách dễ dàng hơn.
- Select:
+ Lấy ra tất cả các hàng từ một bảng


+ Lấy ra một hàng từ một bảng

+ Lấy ra một cột từ một hàng

+ Lấy ra một danh sách các giá trị của cột

Câu lệnh trên trả về một mảng các giá trị của cột “title” từ bảng “roles”.
Chú ý: Các cột sẽ được trả về trong mảng có thể được chỉ định như sau:

+ Chỉ định một mệnh đề Select

+ Sử dụng Where

Hoặc

+ Sử dụng Where Between

20


- Joins: câu lệnh Joins cũng có thể được thực thi thông qua Query builder bằng
cách sử dụng các cú pháp sau:
+ Câu lệnh Join cơ bản:

+ Left Join

- Các phép toán thống kê: hỗ trợ cho quản trị viên xem và kiểm soát kho hàng
thông qua các phép toán như:
+ Count


+ Max

+ Min

+ Sum

+ Average

21


×