Nội dung được tác giả trình bày cô động, dễ hiểu kèm theo các bước hướng dẫn thực hành chi tiết theo nguyên tắc quan tâm đến kết quả đầu ra, khả năng tự học và kỹ năng cần thiết để HSSV [r]
Trang 1UBND TỈNH BÀ RỊA – VŨNG TÀU
TRƯỜNG CAO ĐẲNG KỸ THUẬT CÔNG NGHỆ
GIÁO TRÌNH
MÔ ĐUN LẬP TRÌNH WEB VỚI LARAVEL FRAMEWORK
NGHỀ: CÔNG NGHỆ THÔNG TIN
Trang 2TUYÊN BỐ BẢN QUYỀN
Nhằm đáp ứng nhu cầu học tập và nghiên cứu cho giảng viên và sinh viênnghề Công nghệ Thông tin trong trường Cao đẳng Kỹ thuật Công nghệ Bà Rịa –Vũng Tàu, chúng tôi đã thực hiện biên soạn tài liệu Lập trình web với Laravelframework
Tài liệu được biên soạn thuộc loại giáo trình phục vụ giảng dạy và học tập,lưu hành nội bộ trong Nhà trường nên các nguồn thông tin có thể được phépdùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo.Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinhdoanh thiếu lành mạnh sẽ bị nghiêm cấm
Trang 3LỜI GIỚI THIỆU
Giáo trình “Lập trình web với Laravel framework” được biên soạn dựa trênkhung chương trình đào tạo Cao đẳng nghề Công nghệ Thông tin đã đượcTrường Cao đẳng Kỹ thuật Công nghê Bà Rịa – Vũng Tàu phê duyệt
Tác giả đã nghiên cứu một số tài liệu, công nghệ hiện đại kết hợp với kinhnghiệm làm việc thực tế để viết nên giáo trình này Nội dung được tác giả trìnhbày cô động, dễ hiểu kèm theo các bước hướng dẫn thực hành chi tiết theonguyên tắc quan tâm đến kết quả đầu ra, khả năng tự học và kỹ năng cần thiết đểHSSV có thể hoàn thành ứng dụng web quảng cáo sản phẩm, thương mại điện
tử, … bằng Laravel framework, một trong những framework thông dụng hiệnnay, đáp ứng nhu cầu thực tế của doanh nghiệp
Nội dung giáo trình được chia thành 13 bài, trong đó:
Bài 6: Resource controller
Bài 7: Truy xuất cơ sở dữ liệu
Bài 8: Phân trang
Bài 9: Xây dựng blade template
Bài 10: Chứng thực
Bài 11: Session
Bài 12: Quản lý người dùng
Bài 13: Gửi email và upload tập tin
Trong quá trình biên soạn, chắc chắn giáo trình còn nhiều thiếu sót Tác giảrất mong nhận được ý kiến đóng góp của quý thầy/cô và các em học sinh, sinhviên để tiếp tục hoàn thiện hơn
Trang 4Xin chân thành cảm ơn quý đồng nghiệp, bạn bè đã có những ý kiến đónggóp trong quá trình biên soạn giáo trình này.
Bà Rịa – Vũng Tàu, ngày …… tháng …… năm ………
Tham gia biên soạn
1 Phan Hữu Phước – Chủ biên
Trang 5MỤC LỤC
LỜI GIỚI THIỆU 1
MỤC LỤC 3
BÀI 1: TỔNG QUAN VỀ LARAVEL 9
1 Mô hình MVC 9
2 Cài đặt Composer 10
CÂU HỎI, BÀI TẬP 15
GỢI Ý, ĐÁP ÁN 15
BÀI 2: TẠO LARAVEL SITE 16
1 Một số lệnh tạo và chạy Laravel site 16
1.1 Xem các lệnh của composer: composer 16
1.2 Tạo một Laravel site 16
1.3 Chạy một Laravel site 17
2 Cấu trúc thư mục trong Laravel site 18
3 Cấu hình tập tin config/database.php kết nối đến CSDL MySQL 18
CÂU HỎI, BÀI TẬP 18
BÀI 3: ROUTING 19
1 Cú pháp 19
2 Route chuyển tiếp 20
3 Route có tham số 20
4 Đặt tên cho route 21
BÀI 4: MIDDLEWARE 22
1 Khái niệm 22
2 Định nghĩa Middleware 22
2.1 Tạo Middleware 22
2.2 Middleware trước và sau 24
3 Đăng ký Middleware 25
Trang 63.1 Đăng ký toàn cục (Global Middleware) 25
3.2 Đăng ký đến route 25
3.3 Gom nhóm Middleware 26
3.4 Sắp xếp thứ tự Middleware 27
4 Middleware có tham số 27
5 Hàm terminate 28
BÀI 5: CONTROLLER 30
1 Khái niệm 30
2 Tạo controller 30
3 Định nghĩa hàm (hành động) của controller 31
4 Tạo view cho hàm của controller 32
5 Truyền dữ liệu route, controller, view 32
6 Single Action Controllers (Controller chỉ có một hàm) 34
7 Controller Middleware 36
BÀI 6: RESOURCE CONTROLLER 37
1 Khái niệm 37
2 Tạo Resource controller 38
3 Xử lý hàm index hiển thị danh sách chủ đề 40
4 Xử lý hàm create và store để thêm dữ liệu 40
5 Xử lý hàm edit và update để sửa dữ liệu 41
6 Xử lý hàm destroy để xóa dữ liệu 43
CÂU HỎI, BÀI TẬP 43
BÀI 7: TRUY XUẤT CSDL 44
1 Cấu hình đăng nhập CSDL 44
2 Thực hiện câu lệnh SQL đơn giản 45
3 Query Builder 45
3.1 Giới thiệu 45
3.2 Các hàm đọc kết qủa 45
Trang 73.3 Biểu thức Raw 47
3.4 Lệnh join 47
3.5 Lệnh union 47
3.6 Mệnh đề where 47
3.7 Sắp xếp, gom nhóm, giới hạn và nhảy dòng 47
3.8 Mệnh đề điều kiện (when) 48
3.9 Lệnh insert, update, delete 48
BÀI 8: PHÂN TRANG 49
1 Cập nhật hàm trả về view hiển thị danh sách 49
2 Cập nhật view hiển thị danh sách 49
2.1 Hiển thị phân trang 49
2.2 Hiển thị số trang liên kết 50
CÂU HỎI, BÀI TẬP 50
BÀI 9: XÂY DỰNG BLADE TEMPLATE 52
1 Giới thiệu Blade template 52
2 Tạo và sử dụng blade template 52
BÀI 10: CHỨNG THỰC 56
1 Tạo chức năng chức thực cho site 56
2 Khảo sát các trang của chức năng chứng thực 57
3 Tạo table quản lý người dùng 58
4 Đăng ký tài khoản 59
5 Tùy biến trang mặc định 59
6 Truy cập yêu cầu chứng thực 60
BÀI 11: SESSION 62
BÀI 12: QUẢN LÝ NGƯỜI DÙNG 63
BÀI 13: GỬI EMAIL VÀ UPLOAD TẬP TIN 64
TÀI LIỆU THAM KHẢO 65
Trang 8GIÁO TRÌNH MÔ ĐUN
Tên mô đun: Lập trình web với Laravel framework
Mã mô đun: MĐ30
Vị trí, tính chất, ý nghĩa và vai trò của mô đun:
Vị trí: được giảng dạy sau khi học xong các môn cơ sở và Lập trình webPHP & MySQL
Tính chất: là mô đun tự chọn
Ý nghĩa và vai trò của mô đun: cung cấp cho người học kiến thức và kỹnăng để có thể thiết kế, xây dựng và phát triển ứng dụng web PHP theo môhình MVC bằng Laravel framework
Mục tiêu của mô đun:
Về kiến thức:
+ Trình bày mô hình MVC
+ Biết các bước cài đặt Composer
+ Biết một số lệnh tạo và chạy Laravel site
+ Trình bày được quy trình xử lý yêu cầu Laravel site
+ Biết công dụng của route
+ Biết khái niệm về middleware
+ Trình bày các loại middleware
+ Trình bày khái niệm và vai trò của controller
+ Trình bày resource controller
+ Biết công dụng của các hàm trong resource controller
+ Biết đường dẫn của tập tin cấu hình
+ Biết các thuộc tính cấu hình cho truy xuất CSDL, gửi email, upload tậptin
+ Biết công dụng của phân trang
+ Trình bày quy trình tạo phân trang cho trang hiển thị danh sách
+ Biết công dụng của template
+ Trình bày công dụng của từng thành phần trong blade template
+ Biết công dụng của chứng thực
+ Biết lệnh để tạo chức năng chức thực cho site
+ Trình bày khái niệm và công dụng của Session
Trang 9+ Biết quy trình đọc, cập nhật thông tin người dùng
+ Trình bày quy trình tạo trang gửi email và upload tập tin
Về kỹ năng:
+ Cài đặt Composer
+ Tạo mới, cấu hình và chạy Laravel site
+ Định nghĩa một route trong web.php
+ Tạo route trả về một view
+ Tạo route trả về một hành động của controller
+ Tạo và đăng ký middleware
+ Lưu ý sử dụng middleware trong những trang phù hợp tránh gây khóchịu cho người truy cập
+ Tạo controller và định nghĩa các hàm hành động trong controller
+ Truyền dữ liệu từ route đến controller và hiển thị trên view
+ Tạo resource controller
+ Viết các lệnh xử lý cho các hàm hành động trong resource controller+ Tạo các trang truy xuất CSDL bằng các lệnh SQL đơn giản và QueryBuilder
+ Tạo chức năng phân trang cho các trang hiển thị danh sách
+ Tạo template cho các view
+ Tạo view sử dụng blade template
+ Tạo chức năng chức thực cho site
+ Phân quyền cho các trang
+ Sử dụng Session lưu trữ thông tin khách truy cập và tạo chức năng giỏhàng
+ Tạo các trang quản lý thông tin người dùng
+ Tạo trang liên hệ gửi email đến quản trị
+ Tạo trang upload tập tin
Trang 10+ Xử lý cẩn thận ngăn chặn kẻ xấu sử dụng chức năng gửi emal và uploadtập tin để tấn công và phá hoại site
+ Có thể vận dụng để xây dựng website thương mại, quảng bá chuyênnghiệp bằng các framework, CMS mã nguồn mở theo mô hình MVC.Nội dung của mô đun:
Trang 11BÀI 1: TỔNG QUAN VỀ LARAVEL
Trang 12Hình 1.2 Hoạt động của mô hình MVC
Laravel framework là một trong những framework phổ biến, hỗ trợ phát triểnứng dụng web bằng ngôn ngữ PHP trên mô hình MVC
2 Cài đặt Composer
Để có thể tạo và chạy thử ứng dụng web sử dụng Laravel framework thì máytính phải đươc cài đặt gói XAMPP và Composer Việc cài đặt gói XAMPP đãđược trình bày chi tiết trong giáo trình Lập trình web PHP & MySQL Theo đó,giáo trình này trình bày các bước cài đặt Composer
Bước 1: truy cập trang https://getcomposer.org/
Bước 2: click chuột lên Download
Bước 3: chạy file Composer-Setup.exe sau khi tải xong để cài đặt
Bước 4: chọn Yes để tiếp tục
Bước 5: chọn Next để tiếp tục
Trang 13Bước 6: chọn tập tin php.exe trong gói XAMPP
Bước 7: chọn Next để tiếp tục
Bước 8: chọn Install bắt đầu cài đặt
Trang 14Bước 9: chọn Next để tiếp tục
Bước 10: chọn Finish hoàn thành quá trình cài đặt
Bước 11: cấu hình đường dẫn hệ thống
Bước 11.1: click chuột phải Computer, chọn Properties
Trang 15Bước 11.2: chọn Advanced system settings Xuất hiện hộp thoại SystemProperties
Bước 11.3: chọn tab Advanced
Bước 11.4: chọn Environment Variables… Xuất hiện hộp thoại EnvironmentVariables
Trang 16Bước 11.5: chọn Path trong danh sách User variables for … rồi chọn Edit…Xuất hiện hộp thoại Edit environment variable
Bước 11.6: chọn Edit rồi nhập vào
%USERPROFILE%\AppData\Roaming\Composer\vendor\bin
Trang 17Bước 11.7: chọn OK rồi khởi động lại máy tính
CÂU HỎI, BÀI TẬP
1.1 Thực hiện cài đặt các phần mềm cần thiết, sau đó cấu hình đường dẫn hệthống để có thể tạo ứng dụng web sử dụng Laravel framework
GỢI Ý, ĐÁP ÁN
Kiểm tra gói XAMPP
Tải và cài đặt XAMPP và Composer
Trang 18BÀI 2: TẠO LARAVEL SITE
Biết một số lệnh tạo và chạy Laravel site
Tạo được Laravel site
Cấu hình và chạy Laravel site
Cẩn thận tạo site đúng đường dẫn, không làm ảnh hưởng đến hệ thống
Nội dung chính:
1 Một số lệnh tạo và chạy Laravel site
1.1 Xem các lệnh của composer: composer
Hình 2.1 Kết quả của lệnh composer
1.2 Tạo một Laravel site
Có 2 cách để tạo một Laravel site
Cách 1: Bằng trình cài đặt Laravel Thực hiện 2 bước
Bước 1: composer global require “laravel/installer”
Trang 19Bước 2: laravel new <TênSite>
Cách 2: Bằng lệnh create-project của Composer
composer create-project prefer-dist laravel/laravel
<TênSite>
Viết các lệnh thực hiện tạo Laravel site có tên LaravelBlog theo cách 1
1.3 Chạy một Laravel site
Dùng lệnh: php artisan serve
Mở trình duyệt, truy cập địa chỉ http://localhost:8000 để xem kết quả
Trang 203 Cấu trúc thư mục trong Laravel site
Hình 2.2 Cấu trúc thư mục lưu trữ trong Laravel site
controller: chứa các tập tin định nghĩa controller xử lý yêu cầu
config: chứa các tập tin cấu hình site Ví dụ: thông tin truy xuất cơ sở dữliệu
views: chứa các tập tin giao diện hiển thị
routes: chứa các tập tin định nghĩa route chuyển từ địa chỉ yêu cầu đếncontroller xử lý tương ứng
4 Cấu hình tập tin config/database.php kết nối đến CSDL MySQL
CÂU HỎI, BÀI TẬP
2.1 Tạo một Laravel site có tên bookstore bằng cách 1
2.2 Tạo Laravel site có tên tracuudiem bằng cách 2
2.3 Đường dẫn tập tin chứa cấu hình kết nối đến CSDL?
2.4 Lệnh để chạy Laravel site?
Trang 21 Trình bày được quy trình xử lý yêu cầu Laravel site
Biết công dụng của route
Định nghĩa một route trong web.php
Tạo route trả về một view
Tạo route trả về một hành động của controller
Chính xác các ký tự IN, thường
Nội dung chính:
1 Cú pháp
Các route được định nghĩa trong tập tin routes/web.php
Cú pháp định nghĩa một rout: Rout::get/post($uri, $callback);
$uri: địa chỉ tương đối của ứng dụng
$callback: lệnh xử lý
Ví dụ: route được thực hiện bởi một function, trả về kết quả là một chuỗi.
Kiểm tra: truy cập vào trang http://domain/about để xem kết quả
Ví dụ: route được thực hiện bởi một function, trả về là một view
Bước 1: sửa lại định nghĩa rout trên như sau:
Bước 2: tạo file resources/views/about.blade.php
Trang 22Truy cập lại trang http://domain/about để xem kết quả.
Ví dụ: route được thực hiện bởi một controller
hoặc
hoặc
5 Route chuyển tiếp
Khi muốn tạo route chuyển tiếp từ địa chỉ này đến route khác xử lý
Khi đó, việc truy cập vào địa chỉ http://domain/sanpham hoặc http://domain/sp
sẽ hiển thị cùng một kết quả trên trình duyệt
6 Route có tham số
Kiểm tra: truy cập trang http://domain/tong/3/5 để xem kết quả
Trang 237 Đặt tên cho route
Sử dụng route đã được đặt tên:
Xem thêm: https://laravel.com/docs/5.7 The Basics Routing
Trang 24BÀI 4: MIDDLEWARE
Mã bài: 30.4
Giới thiệu:
Một trong những thành phần trung gian tham gia vào quá trình tiếp nhận và
xử lý yêu cầu của người dùng là Middleware
Mục tiêu:
Biết khái niệm về middleware
Trình bày các loại middleware
Tạo và đăng ký middleware
Lưu ý sử dụng middleware trong những trang phù hợp tránh gây khó chịucho người truy cập
Không làm ảnh hưởng đến các thành phần khác gây lỗi site
Nội dung chính:
1 Khái niệm
Middleware cung cấp một cơ chế thuận tiện để lọc các yêu cầu HTTP truy cậpvào ứng dụng Ví dụ, Laravel chứa sẵn một middleware để chứng thực ngườidùng ứng dụng của bạn đã được xác thực Nếu người dùng không được xácthực, middleware này sẽ chuyển hướng người dùng đến trang đăng nhập Tuynhiên, nếu người dùng được xác thực, middleware sẽ cho phép các yêu cầu truycập vào ứng dụng
Có thể tạo thêm các middleware để thực hiện các công việc khác bên trong ứngdụng web Laravel Ví dụ, middleware CORS có thể chịu trách nhiệm thêm cáctiêu đề thích hợp cho tất cả các câu trả lời rời khỏi ứng dụng, một middlewaređăng nhập có thể ghi lại tất cả các yêu cầu gửi đến ứng dụng
Laravel có sẵn các middleware giúp xác thực và bảo vệ CSRF Tất cả cácmiddleware này đều nằm trong thư mục app/Http/Middleware
8 Định nghĩa Middleware
2.1 Tạo Middleware
Ví dụ: Tạo middleware kiểm tra tuổi
Bước 1: dùng lệnh make:middleware Artisan
php artisan make:middleware TênMiddleware
Trang 25Lệnh trên sẽ tạo tập tin app/Http/Middleware/CheckAge.php
Bước 2: cập nhật nội dung tập tin
Trang 26Nếu tuoi<16 thì người dùng sẽ bị chuyển đến trang mặc định, ngược lại thìngười dùng sẽ được phép truy cập Để truyền dữ liệu từ middleware, chúng ta
gọi hàm $next với tham số $request.
2.2 Middleware trước và sau
Middleware được thực hiện trước hoặc sau một yêu cầu phụ thuộc vào việc địnhnghĩa chính middleware đó Ví dụ bên dưới là một middleware được thực hiệntrước khi thi thực hiện yêu cầu xử lý
Ví dụ bên dưới là middleware được thực hiện sau khi thực hiện yêu cầu xử lý
Trang 279 Đăng ký Middleware
3.1 Đăng ký toàn cục (Global Middleware)
Nếu muốn middleware thực hiện xuyên suốt ứng dụng, chúng ta đặt nó vào danhsách của thuộc tính $middleware bên trong tập tin app/Http/Kernel.php
3.2 Đăng ký đến route
Trong trường hợp muốn middleware được kích hoạt trong một controller cụ thể.Bước 1: trước hết chúng ta phải đăng ký middleware với một key bên trongthuộc tính $routeMiddleware trong tập tin Kernel.php
Bước 2: Đăng ký route đến middleware trong tập tin routes/web.php
Kiểm tra: truy cập đến địa chỉ http://domain/user/dangky/1980 vàhttp://domain/user/dangky/2010 để xem kết quả
Để ngăn middleware thực hiện cho một yêu cầu cụ thể nào đó thì dùng phươngthức withoutMiddleware
Trang 28Không thể sử dụng withoutMiddleware với các middleware toàn cục (GlobalMiddleware)
Các nhóm middleware có thể được đăng ký đến các route hoặc các action bằngcách sử dụng cú pháp tương tự như middleware đơn lẻ Việc gom nhómmiddleware giúp thuận lợi hơn khi đăng ký nhiều middleware một lúc
Trang 293.4 Sắp xếp thứ tự Middleware
Nếu muốn các middleware thực hiện theo thứ tự cụ thể thì sử dụng thuộc tính
$middlewarePriority bên trong tập tin app/Http/Kernel.php
10 Middleware có tham số
Middleware có thể nhận tham số truyền vào
Định nghĩa middleware có tham số:
Trang 30Sử dụng middleware có tham số:
11 Hàm terminate
Đôi khi một middleware có thể cần thực hiện một số công việc sau khi phản hồiHTTP đã được gửi đến trình duyệt Nếu muốn phương thức kết thúc trênmiddleware và máy chủ web đang sử dụng FastCGI, phương thức kết thúc sẽ tựđộng được gọi sau khi phản hồi được gửi đến trình duyệt:
Trang 31Phương thức terminate phải nhận cả 2 tham số request và response Sau khimiddlewware được định nghĩa thì middleware phải được đăng ký vào danh sáchroute hoặc global trong tập tin app/Http/Kernel.php.
Khi gọi phương thức terminate bên trong middleware, Laravel sẽ giải quyết mộtphiên bản mới của middleware từ vùng chứa dịch vụ Nếu muốn sử dụng cùngmột phiên bản middleware khi phương thức xử lý và kết thúc được gọi thì phảiđăng ký middeware với vùng chứa bằng phương thức singleton của vùng chứa.Thông thường, điều này nên được thực hiện trong phương thức register củaAppServiceProvider.php
Trang 32 Định nghĩa các hàm hành động trong controller
Truyền dữ liệu từ route đến controller và hiển thị trên view
Trang 33Kết quả: có được tập tin app/Http/Controllers/SanPhamController.php
13 Định nghĩa hàm (hành động) của controller
Kiểm tra: truy cập trang http://domain/sanpham để xem kết quả
Cập nhật lại hàm index để trả về một view