Để đá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, đ
Trang 1LỜ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
Trang 2LỜ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
Trang 3MỤ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
Trang 42.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
Trang 5LỜ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!
Trang 6CHƯƠ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
Trang 7Laravel 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
Trang 81.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 real-time 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
Để 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
Trang 9- Bước 1: Cài đặt Composer
Vào đường dẫn: https://getcomposer.org/Composer-Setup.exe để 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
Trang 10- 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
Trang 111.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ý
Trang 12Nó 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 http://laravel.com
Trang 13Mỗ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();
});
Trang 14Mỗ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
Trang 15Hì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
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:
Trang 16Hì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
Trang 17- 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:
Trang 18‘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
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
Trang 19Trong 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:
Trang 20Hì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:
Trang 21Hì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
Trang 221.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
Trang 231.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ệ
Trang 24ứ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
Trang 25- 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:
Trang 26- Insert:
Insert dữ liệu vào bảng có trường ID tự tăng, sử dụng insertGetId Insert nhiều Records vào bảng
- Update:
+ Updating Records vào một bảng
+ Tăng dần hoặc giảm dần các giá trị trong cột
+ Ngoài ra các cột được thêm vào cũng có thể được chỉ ra để update
- Delete
+ Xóa các Record trong một bảng
+ Xóa tất cả các Record trong bảng
Trang 271.7 Eloquent ORM
Eloquent trong Laravel 5 là một ORM (Object Relational Mapping), cung cấp các ActiveRecord đơn giản nhưng vô cùng chuyên nghiệp giúp việc thao tác với cơ sở dữ liệu được thuận tiện hơn Mỗi bảng trong cơ sở dữ liệu đều tương đương với một Model Model này sẽ tương tác trên bảng được chỉ định đó Các model sẽ cho phép việc thực thi các câu lệnh truy vấn cho dữ liệu vào trong các bảng tương ứng cũng như thêm các dòng mới vào trong bảng
Trước khi sử dụng các câu lệnh trong Eloquent, việc kiểm tra dự án đã kết nối với database hay chưa thông qua file database.php như đã nêu ở phần Query Builder trên là hết sức cần thiết
Trước tiên một file model có tên User.php sẽ được tạo với nội dung sau:
class User extends Eloquent {
protected $table = 'users';
return Response::make('Not Found', 404);
});
Trang 28+ Truy vấn sử dụng Eloquent Models
$users = User::where('id', '>', 100)->take(10)->get();
foreach ($users as $user) {
echo $user->name;
} + Các hàm trong query builder cũng có thể được sử dụng theo cú pháp sau:
$count = User::where('id', '>', 100)->count();
- Thêm dữ liệu (Insert):
+ Đề tạo một record mới trong bảng CSDL, một thực thể của model sẽ được tạo và gọi phương thức save
$user = new User;
$user->name = ‘Hoang’;
$user->save();
+ Sử dụng phương thức Create
// Tạo một user mới trong bảng User
$user = User::create(array('name' => 'John'));
// Lấy dữ liệu về hoặc tạo mới nếu như không tồn tại
$user = User::firstOrCreate(array('name' => 'John'));
// Lấy dữ liệu về hoặc tạo một biến instance mới
$user = User::firstOrNew(array('name' => 'John'));
$user->push();
+ Câu lệnh update sẽ được thực thi để truy vấn model theo điều kiện
Trang 29$affectedRows = User::where('id', '>', 100)->update(array('status'=>2));
- Xóa dữ liệu (Delete):
Trong Laravel 5.x, có hai cách để xóa các records Nếu như có một Model lấy lên từ database, khi đó phương thức Delete sẽ được gọi theo cú pháp:
Lệnh xóa mềm (soft-delete) rất dễ để có thể thêm vào trong các model Eloquent thông qua cách khai báo sau:
Nếu như trong một vài trường hợp muốn lấy lại các dữ liệu đã xóa thì có thể
sử dụng cú pháp sau để có thể phục hồi lại dữ liệu đã bị xóa:
Trang 30CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Chính vì vậy, để khắc phục những hạn chế trên, đồ án đã đi vào nghiên cứu, tiến hành 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, và xây dựng thành công website http://vanbanonline.ga Website này giúp cho người dùng có thể truy cập, tìm kiếm và đọc tài liệu trực tuyến toàn diện nội dung tài liệu đó mà không cần mất chi phí tải về, mặt khác người dùng có thể đăng nhập, đăng ký tài khoản, bình luận và tải về nếu muốn
2.2 Phân tích hệ thống
2.2.1 Yêu cầu bài toán
Sau quá trình khảo sát thực trạng, website cần phải đảm bảo một số yêu cầu như sau:
- Xây dựng một hệ thống quản lý và lưu trữ tài liệu trực tuyến, với một website động, các tài liệu được cập nhật theo định kỳ
Trang 31- Người dùng truy cập vào website có thể xem, tìm kiếm các tài liệu mới nhất, nổi bật nhất và các tài liệu khác theo danh mục
- Tìm tài liệu theo tên, người dùng có thể nhập từ khóa của tài liệu cần tìm vào ô tìm kiếm Nhấn tìm kiếm, website sẽ trả về tất cả các tài liệu có tên tương đương với từ khóa người dùng nhập vào
- Xem chi tiết tài liệu, người dùng chọn xem 1 tài liệu bất kỳ Trang chi tiết của tài liệu đó sẽ được hiện ra và kèm theo các thông tin liên quan
- Tải lên tài liệu, khi người dùng nhấn vào “tải lên”, trang tải lên sẽ được hiện ra Người dùng phải điền đầy đủ thông tin của tài liệu để có thể tải lên Sau khi tải lên thành công, người dùng sẽ được chuyển hướng về trang quản lý tài liệu
- Xem tài liệu đã tải lên, tại đây người dùng có thể xem tài liệu, sửa tài liệu
và xóa tài liệu
- Sau quá trình truy cập và tương tác với website, người dùng đã biết được các tiện ích của website, có thể cung cấp một nguồn tài liệu phong phú, dồi dào, phục vụ đắc lực cho quá trình học tập và nghiên cứu của mình, người dùng có thể nhấn vào ô đăng ký
2.2.2 Mô tả bài toán
Mô tả các chức năng chính của hệ thống:
Mục đích chính của bài toán này là thực hiện xây dựng thành công website: http://vanbanonline.ga nhằm phục vụ cho người dùng có thể truy cập, tìm kiếm và đọc tài liệu trực tuyến toàn diện nội dung tài liệu đó mà không cần mất chi phí tải
về, mặt khác người dùng có thể đăng nhập, đăng ký tài khoản và bình luận Bài toán này sẽ phần nào giải quyết được những khó khăn đặt ra Việc quản lý website
đó dựa trên một số nhiệm vụ như sau:
- Chức năng xem tài liệu trực tuyến: xem tài liệu trực tuyến ngay trên website mà không cần tải về
- Chức năng tìm kiếm tài liệu: tìm kiếm nhanh các tài liệu do người dùng tải lên
- Chức năng đăng ký tài khoản: người dùng có thể đăng ký tài khoản nếu muốn upload, download tài liệu và bình luận về tài liệu bất kỳ