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 (2.45 MB, 67 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
UBND TỈNH BÀ RỊA – VŨNG TÀU
<b>TRƯỜNG CAO ĐẲNG KỸ THUẬT CƠNG NGHỆ</b>
<b>MƠ ĐUN LẬP TRÌNH WEB VỚI LARAVEL FRAMEWORK</b>
<b>NGHỀ: CƠNG NGHỆ THƠNG TIN</b>
<b>TRÌNH ĐỘ CAO ĐẲNG</b>
<i>(Ban hành kèm theo Quyết định số: ……/QĐ-CĐKTCN, ngày … tháng … năm</i>
<i>20…… của Hiệu trưởng Trường Cao đẳng Kỹ thuật Công nghệ BR-VT)</i>
<b>TUYÊN BỐ BẢN QUYỀN</b>
Nhằm đáp ứng nhu cầu học tập và nghiên cứu cho giảng viên và sinh viên
nghề 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 Laravel
framework.
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ép
dùng ngun bản hoặc trích dùng cho các mục đích về đào tạo và tham khảo.
<b>LỜI GIỚI THIỆU</b>
Giáo trình “Lập trình web với Laravel framework” được biên soạn dựa trên
khung chương trình đào tạo Cao đẳng nghề Công nghệ Thông tin đã được
Trườ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 kinh
nghiệ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ì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 có thể hồ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ện
nay, đá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 1: Tổng quan
Bài 2: Tạo Laravel site
Bài 3: Routing
Bài 4: Middleware
Bài 5: Controller
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
Xin chân thành cảm ơn quý đồng nghiệp, bạn bè đã có những ý kiến đóng
góp trong q 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
<b>MỤC LỤC</b>
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: <b>composer</b>...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.1. Đăng ký tồ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.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
<b>GIÁO TRÌNH MƠ ĐUN</b>
<b>Tên mơ đun: Lập trình web với Laravel framework</b>
<b>Mã mơ đun: MĐ30</b>
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 web
PHP & 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:
+ 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ý 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ập
tin
+ 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 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à Query
Builder
+ 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
Về năng lực tự chủ và trách nhiệm:
+ Cẩn thận tạo site đúng đường dẫn, khơng làm ảnh hưởng đến hệ thống
+ Chính xác các ký tự IN, thường
+ Xử lý cẩn thận ngăn chặn kẻ xấu sử dụng chức năng gửi emal và upload
tập tin để tấn công và phá hoại site
<b>BÀI 1: TỔNG QUAN VỀ LARAVEL</b>
<b>Mã bài: 30.1</b>
<b>Giới thiệu:</b>
Để có thể tạo và chạy thử ứng dụng web dùng Laravel framework, yêu cầu
máy tính phải được cài đặt và cấu hình biến đường dẫn hệ thống.
<b>Mục tiêu:</b>
Trình bày mơ hình MVC
Biết các bước cài đặt Composer
Cài đặt Composer
Kiểm tra phiên bản XAMPP phù hợp đã được cài đặt trước đó trên máy
tính
<b>Nội dung chính:</b>
<b>1. Mơ hình MVC</b>
Model View Controller là một mơ hình kiến trúc theo hướng đối tượng, cho
phép người phát triển tách một ứng dụng thành 3 thành phần chính:
Model: thành phần đại diện cho dữ liệu của ứng dụng, bao gồm cả chức
năng kiểm tra tính hợp lệ của dữ liệu.
View: thành phần đảm trách việc hiển thị dữ liệu và các thành phần trong
giao diện người dùng.
Controller: thành phần có trách nhiệm tiếp nhận và xử lý các yêu cầu gửi
đến cho ứng dụng, làm nhiệm vụ điều phối công việc giữa View và Model.
Việc phát triển ứng dụng, nâng cấp, bảo trì và thử nghiệm trở nên đơn giản
và dễ dàng hơn.
<i>Hình 1.2. Hoạt động của mơ hình MVC</i>
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.
<b>2. Cài đặt Composer</b>
Để có thể tạo và chạy thử ứng dụng web sử dụng Laravel framework thì máy
tí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 />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 6: chọn tập tin php.exe trong gói XAMPP
Bước 7: chọn Next để tiếp tục
Bước 9: chọn Next để tiếp tục
Bước 10: chọn Finish hồn thành q trình cài đặt
Bước 11: cấu hình đường dẫn hệ thống
Bước 11.2: chọn Advanced system settings. Xuất hiện hộp thoại System
Properties
Bước 11.3: chọn tab Advanced
Bướ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
Bước 11.7: chọn OK rồi khởi động lại máy tính
<b>CÂU HỎI, BÀI TẬP</b>
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.
<b>GỢI Ý, ĐÁP ÁN</b>
Kiểm tra gói XAMPP
<b>BÀI 2: TẠO LARAVEL SITE</b>
<b>Mã bài: 30.2</b>
<b>Giới thiệu:</b>
Để có thể tạo và chạy thử ứng dụng web dùng Laravel framework, yêu cầu
máy tính phải được cài đặt và cấu hình biến đường dẫn hệ thống.
<b>Mục tiêu:</b>
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
<b>Nội dung chính:</b>
<b>1. Một số lệnh tạo và chạy Laravel site</b>
1.1. Xem các lệnh của composer: <b>composer</b>
<i>Hình 2.1. Kết quả của lệnh composer</i>
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 2:<b> laravel new <TênSite></b>
Cách 2: Bằng lệnh create-project của Composer
<b>composer create-project --prefer-dist laravel/laravel</b>
<b><TênSite></b>
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:<b> php artisan serve</b>
<b>3. Cấu trúc thư mục trong Laravel site</b>
<i>Hình 2.2. Cấu trúc thư mục lưu trữ trong Laravel site</i>
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 đến
controller xử lý tương ứng
<b>4. Cấu hình tập tin config/database.php kết nối đến CSDL MySQL</b>
<b>BÀI 3: ROUTING</b>
<b>Mã bài: 30.3</b>
<b>Giới thiệu:</b>
Route là quá trình xác định yêu cầu người dùng thông qua URI để truyền
cho controller cụ thể giải quyết.
<b>Mục tiêu:</b>
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
<b>Nội dung chính:</b>
<b>1. Cú pháp</b>
Các route được định nghĩa trong tập tin routes/web.php
Cú pháp định nghĩa một rout: <b>Rout::get/post($uri, $callback);</b>
$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:
Truy 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
<b>5. Route chuyển tiếp</b>
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.
<b>6. Route có tham số</b>
<b>7. Đặt tên cho route</b>
Sử dụng route đã được đặt tên:
<b>BÀI 4: MIDDLEWARE</b>
<b>Mã bài: 30.4</b>
<b>Giới thiệu:</b>
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.
<b>Mục tiêu:</b>
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ịu
cho 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
<b>Nội dung chính:</b>
<b>1. Khái niệm</b>
Middleware cung cấp một cơ chế thuận tiện để lọc các yêu cầu HTTP truy cập
vào ứng dụng. Ví dụ, Laravel chứa sẵn một middleware để chứng thực người
dùng ứng dụng của bạn đã được xác thực. Nếu người dùng không được xác
thực, middleware này sẽ chuyển hướng người dùng đến trang đăng nhập. Tuy
Có thể tạo thêm các middleware để thực hiện các công việc khác bên trong ứng
dụng web Laravel. Ví dụ, middleware CORS có thể chịu trách nhiệm thêm các
tiê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ác
middleware này đều nằm trong thư mục app/Http/Middleware.
<b>8. Định nghĩa Middleware</b>
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
Lệnh trên sẽ tạo tập tin app/Http/Middleware/CheckAge.php
Nế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 định
nghĩa chính middleware đó. Ví dụ bên dưới là một middleware được thực hiện
trước khi thi thực hiện yêu cầu xử lý.
<b>9. Đăng ký Middleware</b>
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 danh
sách của thuộc tính <i><b>$middleware</b></i> 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 trong
thuộc tính <i><b>$routeMiddleware</b></i> 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ả.
Không thể sử dụng withoutMiddleware với các middleware toàn cục (Global
Middleware)
3.3. Gom nhóm Middleware
Để gom các middleware vào một nhóm thì dùng thuộc tính $middlewareGroups
của HTTP kernel.
Ngồi ra, Laravel đi kèm với các nhóm web và api middleware chứa các
middleware phổ biến phục vụ cho việc tạo giao diện người dùng và các API
route.
3.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.
<b>10. Middleware có tham số</b>
Sử dụng middleware có tham số:
<b>11. Hàm terminate</b>
Phương thức terminate phải nhận cả 2 tham số request và response. Sau khi
middlewware được định nghĩa thì middleware phải được đăng ký vào danh sách
route hoặc global trong tập tin app/Http/Kernel.php.
<b>BÀI 5: CONTROLLER</b>
<b>Mã bài: 30.5</b>
<b>Giới thiệu:</b>
Thành phần quan trọng tiếp nhận và xử lý u cầu chính là controller.
<b>Mục tiêu:</b>
Trình bày khái niệm và vai trò của controller
Tạo controller
Đị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
Chính xác các ký tự IN, thường
<b>Nội dung chính:</b>
<b>1. Khái niệm</b>
Controller là lớp đối tượng được định nghĩa chứa các phương thức bên trong để
tiếp nhận và xử lý yêu cầu
<b>12. Tạo controller</b>
Kết quả: có được tập tin app/Http/Controllers/SanPhamController.php
<b>13. Định nghĩa hàm (hành động) của controller</b>
<b>14. Tạo view cho hàm của controller</b>
Trong ví dụ trên, hàm index trả về view sanpham.index tạo tập tin
<i><b>resources/views/sanpham/index.blade.php</b></i>
Kiểm tra: truy cập trang http://domain/sanpham để xem kết quả
<b>15. Truyền dữ liệu route, controller, view</b>
Ví dụ: Bài tốn hình chữ nhật. Sử dụng HinhChuNhat controller
Bước 1: Định nghĩa route
Theo như trên, chúng ta đã định nghĩa hai route với địa chỉ tương ứng là:
http://domain/hcn/chuvi/{d}/{r}: được chuyển cho hàm chuvi trong
HinhChuNhatController xử lý.
http://domain/hcn/dientich/{d}/{r}: được chuyển cho hàm dientich trong
{d} và {r}: tham số được gửi kèm theo địa chỉ. Khi muốn hiển thị trang kết quả
chu vi hình chữ nhật có chiều dài 10, chiều rộng 6 thì người dùng phải truy cập
vào địa chỉ http://domain/hcn/chuvi/10/6
Bước 3: Định nghĩa các hàm xử lý trong HinhChuNhat controller
Như đã trình bày ở Bước 1, các route có hai tham số là {d} và {r} nên chúng ta
phải xây dựng các hàm tương ứng phải có hai tham số $d và $r.
Trong ví dụ này, ngồi việc trả về một view, chúng ta cịn gửi kèm dữ liệu đến
cho view trong câu lệnh return.
Thực hiện tương tự cho tập tin
resources/views/HinhChuNhat/dientich.blade.php
<b>16. Single Action Controllers (Controller chỉ có một hàm)</b>
Single action controller là controller mà bên trong nó chỉ có duy nhất một hàm
hành động. Hàm hành động bên trong Single action controller phải có tên là
<i><b>__invoke.</b></i>
Bước 1: dùng tùy chọn --invokable trong lệnh make:controller của Artisan theo
cú pháp sau:
php artisan make:controller TênController --invokable
Ví dụ:
Lệnh trên sẽ tạo tập tin app/Http/Controllers/ShowProfile.php với nội dung có
sẵn như bên dưới.
Bước 3: với hàm __invoke được định nghĩa như trên, kết quả trả về là một view
“user.profile” với dữ liệu được gửi đến là biến user = $usr phải có view
user.profile.
Bước 4: tạo tập tin resources/views/user/profile.blade.php để trả về cho hàm
__invoke.
Bước 5: định nghĩa route cho controller
<b>17. Controller Middleware</b>
Middleware có thể được đăng ký đến các route bên trong tập tin route
Tuy nhiên, sẽ thuận lợi và rõ ràng hơn khi gọi hoặc loại bỏ các middleware bên
trong phương thức khởi tạo của controller.
<b>BÀI 6: RESOURCE CONTROLLER</b>
<b>Mã bài: 30.6</b>
<b>Giới thiệu:</b>
Laravel cung cấp một loại controller đặc biệt, gắn liền với các hàm hành
động truy xuất và cập nhật dữ liệu, đó là Resource controller.
<b>Mục tiêu:</b>
Trình bày resource controller
Biết cơng dụng của các hàm trong resource controller
Tạo resource controller
Viết các lệnh xử lý cho các hàm hành động trong resource controller
Chính xác các ký tự IN, thường
<b>Nội dung chính:</b>
<b>1. Khái niệm</b>
Trước đây, route trong các bài trường chỉ thông qua phương thức GET để đọc
giá trị của người dùng.
Resource controller là một controller mà bên trong nó có các hàm hành động
được đặc tên sẵn theo quy tắc của Laravel tương ứng với các cơng việc xem,
xóa, sửa dữ liệu. Việc route đến tất cả các hàm bên trong Resource controller chỉ
thông qua một định nghĩa route duy nhất.
Resource route của Laravel sẽ tự tạo các route đến từng hàm trong controller chỉ
với một dòng lệnh duy nhất. Ví dụ, có thể tạo controller ChuDe có đầy đủ các
hàm cho phép người dùng đọc/thêm/xóa/sửa dữ liệu.
<i>Bảng 6.1. Bảng mô tả các URI tương ứng với hàm bên trong Resource</i>
<i>controller</i>
Method URI Hàm Route
GET /chude index chude.index
GET /chude/create create chude.create
POST /chude store chude.store
GET /chude/{chude} show chude.show
Method URI Hàm Route
PUT/PATCH /chude/{chude} update chude.update
DELETE /chude/{chude} destroy chude.destroy
index: trả về view hiển thị danh sách
create: trả về view hiển thị form cho phép người dùng nhập dữ liệu mới.
store: nhận được POST, xử lý lưu dòng dữ liệu mới từ form của create
show: trả về view hiển thị thơng tin một dịng dữ liệu
edit: trả về view hiển thị form cho phép người dùng sửa thơng tin một dịng
dữ liệu.
update: nhận được PUT/PATCH, xử lý cập nhật dòng dữ liệu
destroy: nhận được DELETE, xử lý xóa dịng dữ liệu
<b>18. Tạo Resource controller</b>
Bước 1: dùng tùy chọn <i><b>--resource</b></i> trong lệnh make:controller artisan.
Cú pháp: <b>php artisan make:controller TênController</b>
<b>--resource</b>
Trong trường hợp controller có sử dụng lớp đối tượng (model) thì sử dụng thêm
tùy chọn --model theo cú pháp sau:
<b>php artisan make:controller TênController --resource</b>
<b>--model =TênModel</b>
Ví dụ:
Nếu khơng cần dùng model hoặc model ChuDe đã được tạo trước đó thì khơng
cần tùy chọn --model=ChuDe
Quan sát nội dung tập tin app/Http/ChuDeController.php
Quan sát nội dung tập tin app/ChuDe.php
Bước 2: cập nhật tập tin app/ChuDe.php
Bước 3: đăng ký resource route trong tập tin routes/web.php
Bước 4: cập nhật tập tin app/Http/Controllers/ChuDeController.php
Khai báo sử dụng thư viện
<b>19. Xử lý hàm index hiển thị danh sách chủ đề</b>
Bước 5: Tạo tập tin resources/chude/index.blade.php
Xem kết quả http://domain/laravelsite1/chude
<b>20. Xử lý hàm create và store để thêm dữ liệu</b>
Bước 1: Như bảng mô tả các hàm/route tương trong Mục 3.6. Chúng ta cần cập
nhật hàm <i><b>index</b></i> trong controller ChuDe để trả về một view.
Lưu ý: thuộc tính action là /chude chứ không phải chude/store
Do việc nhận dữ liệu được nhập từ form (với method là post) và lưu thơng tin
vào dịng dữ liệu mới được thực hiện bởi hàm <i><b>store</b></i> trong controller ChuDe
nên thuộc tính <i><b>action</b></i> của form là /chude (lưu ý: không phải /chude/store).
Bước 3: Cập nhật hàm <b>store</b> để xử lý dữ liệu nhận được từ form.
<b>21. Xử lý hàm edit và update để sửa dữ liệu</b>
Bước 2: Cập nhật hàm <b>edit</b>
Do thuộc tính method của form trong html là GET/POST nhưng hàm update
trong resource controller chỉ thực hiện với method là PUT/PATCH nên chúng ta
phải thêm <b>@method(‘PUT’)</b> kèm với <b>@csrf</b> trong form.
Bước 4: Cập nhật hàm <b>update</b>
<b>22. Xử lý hàm destroy để xóa dữ liệu</b>
hoặc
<b>CÂU HỎI, BÀI TẬP</b>
<b>BÀI 7: TRUY XUẤT CSDL</b>
<b>Mã bài: 30.7</b>
<b>Giới thiệu:</b>
Bất kỳ framework nào cũng có các thư viện hỗ trợ truy xuất CSDL. Bài này
<b>Mục tiêu:</b>
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
Truy xuất CSDL bằng các lệnh SQL đơn giản
Truy xuất CSDL bằng Query Builder
Chính xác các ký tự IN, thường
<b>Nội dung chính:</b>
<b>1. Cấu hình đăng nhập CSDL</b>
<b>23. Thực hiện câu lệnh SQL đơn giản</b>
<b>24. Query Builder</b>
3.1. Giới thiệu
Query Builder cung cấp cách thức trong việc truy xuất CSDL. Query Builder
dùng thư viện PDO của PHP, đảm bảo ngăn chặn bị tấn công SQL injection.
Theo đó, người lập trình khơng cần phải quan tâm đến việc “làm sạch” các
chuỗi bên trong lệnh sql.
3.2. Các hàm đọc kết qủa
table
get: xem table
value
pluck
chunk, chunkById
+ chunk:
+ chunkById
exists, doesntExist
select, distinct
+ select
+ distinct
3.3. Biểu thức Raw
3.3.1. Hàm raw
3.3.2. selectRaw
3.3.3. whereRaw, orWhereRaw
3.3.4. havingRaw, orHavingRaw
3.3.5. orderByRaw
3.4. Lệnh join
3.4.1. Inner join
3.4.2. Left join, Right join
3.4.3. Cross join
3.5. Lệnh union
3.6. Mệnh đề where
3.6.1. where, orWhere
3.6.2. whereColumn, orWhereColumn
3.6.3. whereExists
3.7. Sắp xếp, gom nhóm, giới hạn và nhảy dịng
3.7.1. orderBy
3.8. Mệnh đề điều kiện (when)
3.9. Lệnh insert, update, delete
3.9.1. insert, insertGetId
<b>BÀI 8: PHÂN TRANG</b>
<b>Mã bài: 30.8</b>
<b>Giới thiệu:</b>
Để có thể tạo và chạy thử ứng dụng web dùng Laravel framework, yêu cầu
máy tính phải được cài đặt và cấu hình biến đường dẫn hệ thống.
<b>Mục tiêu:</b>
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
<b>Nội dung chính:</b>
<b>1. Cập nhật hàm trả về view hiển thị danh sách</b>
Cập nhật hàm index của controller ChuDe (app/Http/ChuDeController.php)
DB::table(‘chude’): đọc tất cả các dòng dữ liệu trong table chude
<i><b>-> paginate(10)</b></i> để hiển thị 10 dòng dữ liệu trên mỗi trang và liên kết
đến các trang được hiển thị bằng các con số.
Nếu chỉ muốn hiển thị liên kết đến trang trước (previous) và trang kế tiếp
(next) thì thay <i><b>paginate</b></i> bằng <i><b>simplePaginate</b></i>.
<b>2. Cập nhật view hiển thị danh sách</b>
Cập nhật tập tin tin resources/views/chude/index.blade.php
2.1. Hiển thị phân trang
Truy cập trang http://domain/chude để xem kết quả phân trang.
2.2. Hiển thị số trang liên kết
Sử dụng hàm <i><b>onEachSide</b></i> để chỉ định số trang liên kết hiển thị.
Cập nhật tập tin resources/views/chude/index.blade.php
Truy cập lại trang http://domain/chude để xem kết quả.
Xử lý phân trang cho trang danh mục sách theo yêu cầu sau:
Mỗi trang hiển thị 20 dòng dữ liệu
<b>BÀI 9: XÂY DỰNG BLADE TEMPLATE</b>
<b>Mã bài: 30.9</b>
<b>Giới thiệu:</b>
Để có thể tạo và chạy thử ứng dụng web dùng Laravel framework, yêu cầu
máy tính phải được cài đặt và cấu hình biến đường dẫn hệ thống.
<b>Mục tiêu:</b>
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
<b>Nội dung chính:</b>
<b>1. Giới thiệu Blade template</b>
Blade là công cụ tạo bố cục đơn giản nhưng mạnh mẽ được cung cấp với
Laravel. Không giống như các công cụ template PHP phổ biến khác, Blade
không hạn chế việc sử dụng mã PHP thuần túy trong các blade view. Trong thực
tế, tất cả các blade view được biên dịch thành mã PHP đơn giản và được lưu vào
bộ nhớ cache cho đến khi chúng được sửa đổi. Các tập tin blade view có phần
<b>2. Tạo và sử dụng blade template</b>
Chú ý khối điều khiển hiển thị nội dung section (khung đứt nét) và khối yield
(khung liền nét).
Khai báo sử dụng
blade template
Sửa nội dung của thẻ head trong resources/views/layouts/mylayout.blade.php
<b>BÀI 10: CHỨNG THỰC</b>
<b>Mã bài: 30.10</b>
<b>Giới thiệu:</b>
Để có thể tạo và chạy thử ứng dụng web dùng Laravel framework, yêu cầu
máy tính phải được cài đặt và cấu hình biến đường dẫn hệ thống.
<b>Mục tiêu:</b>
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
<b>Nội dung chính:</b>
<b>1. Tạo chức năng chức thực cho site</b>
Laravel cung cấp cho chúng ta một cách đơn giản nhất để tạo chức năng chứng
thực với đầy đủ các yêu cầu cần thiết bao gồm route và view.
Bước 1: Mở cửa sổ Command Prompt mới
Bước 2: Vào thư mục chứa site
Bước 3: Thực hiện lệnh <b>composer require laravel/ui</b>
Bước 4: Thực hiện lệnh <b>php artisan ui vue --auth</b>
Bước 5: Thực hiện lệnh <b>npm install && npm run dev</b>
Sau khi thực hiện các lệnh trên, chúng ta có được có được các tập tin view cần
thiết cho chức năng chức thực, các tập tin này được đặt trong thư mục
<i><b>resources/views/auth.</b></i>
Ngoài ra, quan sát trong tập tin routes/web.php, chúng ta thấy Laravel đã chèn
thêm 2 dòng lệnh định nghĩa route:
<b>25. Khảo sát các trang của chức năng chứng thực</b>
Trang đăng nhập (http://domain/login)
Trang reset mật khẩu (http://domain/password/reset)
<b>26. Tạo table quản lý người dùng</b>
Dùng lệnh migrate của artisan để tạo table quản lý tài khoản.
<b>27. Đăng ký tài khoản</b>
Sau khi nhập thông tin và click chuột lên Register, chúng ta có được kết quả như
sau:
Table users được chèn thêm 1 dòng dữ liệu mới.
<b>28.</b> <b>Tùy biến trang mặc định</b>
<i><b>redirectTo</b></i> bên trong các <i><b>LoginController, RegisterController,</b></i>
<i><b>ResetPasswordController</b></i>, và <i><b>VerificationController</b></i>.
Ví dụ 1: Sau khi login thành cơng thì chuyển hướng đến địa chỉ /chude/create
Bước 1: Mở tập tin /app/Http/Controllers/Auth/LoginController.php
Bước 2: Thay đổi giá trị của thuộc tính <i><b>redirectTo</b></i>
Thực hiện đăng nhập và xem kết quả.
Ví dụ 2: Sau khi người dùng register thành cơng thì chuyển hướng đến địa chỉ
http://domain/chude
Bước 1: Mở tập tin /app/Http/Controllers/Auth/RegisterController.php
Bước 2: Thay đổi giá trị của thuộc tính <i><b>redirectTo</b></i>
Thực hiện logout rồi đăng ký một tài khoản mới và xem kết quả.
<b>29. Truy cập yêu cầu chứng thực</b>
Khi chúng ta yêu cầu người dùng phải login thành công trước khi truy cập
một địa chỉ nào đó thì dùng lệnh <b>->middleware('auth')</b> kèm với route
tương ứng.
Ví dụ: Người dùng phải login trước khi truy cập vào trang http://domain/about
Bước 1: Mở tập tin /routes/wep.php
Bước 2: Cập nhật lại định nghĩa route
Truy cập vào địa chỉ http://domain/about để xem kết quả.
Dĩ nhiên, chúng ta cũng có thể yêu cầu chứng thực cho controller bằng
cách gọi hàm <b>middleware('auth')</b> bên trong phương thức khởi tạo
của controller.
Ví dụ: Người dùng phải login trước khi truy cập vào bất kỳ địa chỉ nào được
chuyển hướng vào ChuDeController
Truy cập vào địa chỉ http://domain/chude và http://domain/create để xem kết
quả.
Trong trường hợp chúng ta chỉ yêu cầu chứng thực cho một số hàm bên
trong controller thì dùng thêm hàm <i><b>only</b></i> ngay sau hàm <i><b>middleware</b></i>.
Truy cập vào địa chỉ http://domain/chude được phép truy cập