BM/QT10/P.ĐTSV/04/04 Ban hành lần: 3
UBND 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
TRÌNH ĐỘ CAO ĐẲNG
(Ban hành kèm theo Quyết định số: ……/QĐ-CĐKTCN, ngày … tháng … năm 20…… của Hiệu trưởng Trường Cao đẳng Kỹ thuật Công nghệ BR-VT)
TUYÊ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ê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 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 kinh doanh thiếu lành mạnh sẽ bị nghiêm cấm.
LỜ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ê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ể 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ệ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
Xin chân thành cảm ơn quý đồng nghiệp, bạn bè đã có những ý kiến đóng gó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
MỤ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
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
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
GIÁ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 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:
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ậ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 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
+ 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
+ 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
+ Có thể vận dụng để xây dựng website thương mại, quảng bá chuyên nghiệp bằng các framework, CMS mã nguồn mở theo mô hình MVC.
Nội dung của mô đun:
BÀI 1: TỔNG QUAN VỀ LARAVEL Mã bài: 30.1
Giới thiệu:
Để 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.
Mục tiêu:
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
Nội dung chính:
1. Mô hình MVC
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.
Hì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á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 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
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 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
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.4: chọn Environment Variables… Xuất hiện hộp thoại Environment Variables
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
%USERPROFILE%\AppData\Roaming\Composer\vendor\bin
Bướ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.
BÀI 2: TẠO LARAVEL SITE Mã bài: 30.2
Giới thiệu:
Để 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.
Mục tiêu:
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”
Bướ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ả.
3. 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 đến controller 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?
BÀI 3: ROUTING Mã bài: 30.3
Giới thiệu:
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.
Mục tiêu:
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
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
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.
7. Đặ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
BÀ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ị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 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ậ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 nhiên, nếu người dùng được xác thực, middleware sẽ cho phép các yêu cầu truy cậ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 ứ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
Lệ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.
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ý.
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ý.
9. Đă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 danh sá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 trong thuộ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ương thức withoutMiddleware.
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.
Ngoà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.
10. Middleware có tham số
Middleware có thể nhận tham số truyền vào.
Định nghĩa middleware có tham số:
Sử 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ồi
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.
Khi gọi phương thức terminate bên trong middleware, Laravel sẽ giải quyết một phiên bản mới của middleware từ vùng chứa dịch vụ. Nếu muốn sử dụng cùng mộ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ủa AppServiceProvider.php.
BÀI 5: CONTROLLER Mã bài: 30.5
Giới thiệu:
Thành phần quan trọng tiếp nhận và xử lý yêu cầu chính là controller.
Mục tiêu:
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 Nội dung chính:
1. Khái niệm
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
12. Tạo controller
Dùng lệnh: php artisan make:controller
Kế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
14. Tạo view cho hàm của controller
Trong ví dụ trên, hàm index trả về view sanpham.index tạo tập tin resources/views/sanpham/index.blade.php
Kiểm tra: truy cập trang http://domain/sanpham để xem kết quả 15. Truyền dữ liệu route, controller, view
Ví dụ: Bài toá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ý.
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, ngoà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.
Bước 4: Tạo tập tin view resources/views/HinhChuNhat/chuvi.blade.php G i d li u ử ữ ệ cho view
Thực hiện tương tự cho tập tin resources/views/HinhChuNhat/dientich.blade.php
16. Single Action Controllers (Controller chỉ có một hàm)
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à __invoke.
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
Truy cập theo địa chỉ http://domain/user/5 để xem kết quả.
17. Controller Middleware
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.
Cũng có thể đăng ký middleware với controller bằng cách dùng Closure, giúp thuận tiện trong việc xác định các middleware cho controller mà không cần định
BÀI 6: RESOURCE CONTROLLER Mã bài: 30.6
Giới thiệu:
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.
Mục tiêu:
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 Nội dung chính:
1. Khái niệm
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.
Bảng 6.1. Bảng mô tả các URI tương ứng với hàm bên trong Resource controller
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
GET /chude/{chude}/edit edit chude.edit
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 18. Tạo Resource controller
Bước 1: dùng tùy chọn --resource trong lệnh make:controller artisan.
Cú pháp: php artisan make:controller TênController -- resource
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:
php artisan make:controller TênController --resource -- model =TênModel
Ví dụ:
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
***Lưu ý dòng use App\ChuDe: sử dụng model ChuDe do trong lệnh make:controller artisan có sử dụng tham số --model=ChuDe
19. Xử lý hàm index hiển thị danh sách chủ đề
Bước 5: Tạo tập tin resources/chude/index.blade.php
Xem kết quả http://domain/laravelsite1/chude 20. Xử lý hàm create và store để thêm dữ liệu
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 index 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 store trong controller ChuDe nên thuộc tính action của form là /chude (lưu ý: không phải /chude/store).
Bước 3: Cập nhật hàm store để xử lý dữ liệu nhận được từ form.
21. Xử lý hàm edit và update để sửa dữ liệu
Bước 1: Cập nhật tập tin resources/chude/index.blade.php để tạo liên kết đến hàm edit cho phép sửa dữ liệu.
Bước 2: Cập nhật hàm edit
Bước 3: Tạo tập tin resources/chude/edit.blade.php
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 @method(‘PUT’) kèm với @csrf trong form.
Bước 4: Cập nhật hàm update
22. Xử lý hàm destroy để xóa dữ liệu
hoặc
CÂU HỎI, BÀI TẬP
6.1. Tạo resource controller NXB sử dụng model NXB và định nghĩa route.
6.2. Tạo resource controller TacGia sử dụng model TacGia và định nghĩa route.
6.3. Tạo resource controller Sach sử dụng model Sach và định nghĩa route.
BÀI 7: TRUY XUẤT CSDL Mã bài: 30.7
Giới thiệu:
Bất kỳ framework nào cũng có các thư viện hỗ trợ truy xuất CSDL. Bài này cung cấp cho người học kiến thức và kỹ năng sử dụng các thư viện truy xuất CSDL để hiển thị trên ứng dụng web.
Mục tiêu:
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 Nội dung chính:
1. Cấu hình đăng nhập CSDL
Thông tin truy xuất cơ sở dữ liệu được lưu trữ bên trong tập tin config/database.php.
23. Thực hiện câu lệnh SQL đơn giản
24. Query Builder 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
Duyệt các dòng dữ liệu
get: xem table
first
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.7.2. groupBy, having 3.7.3. skip, take, limit, offset
3.8. Mệnh đề điều kiện (when) 3.9. Lệnh insert, update, delete 3.9.1. insert, insertGetId
3.9.2. update, updateOrInsert 3.9.3. delete, truncate
BÀI 8: PHÂN TRANG Mã bài: 30.8
Giới thiệu:
Để 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.
Mục tiêu:
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. Cập nhật hàm trả về view hiển thị danh sách
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
-> paginate(10) để 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 paginate bằng simplePaginate.
2. Cập nhật view hiển thị danh sách
Cập nhật tập tin tin resources/views/chude/index.blade.php 2.1. Hiển thị phân trang
Dùng hàm links để hiển thị liên kết 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 onEachSide để chỉ định số trang liên kết hiển thị.
Cập nhật tập tin resources/views/chude/index.blade.php
BÀI 9: XÂY DỰNG BLADE TEMPLATE Mã bài: 30.9
Giới thiệu:
Để 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.
Mục tiêu:
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. Giới thiệu Blade template
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 mở rộng .blade.php và thường được lưu trong thư mục resources/views.
2. Tạo và sử dụng blade template
Tạo tập tin resources/views/layouts/mylayout.blade.php làm blade template.
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).
Sửa nội dung tập tin resources/views/HinhChuNhat/chuvi.blade.php
Khai báo s d ngử ụ blade template
Sửa nội dung của thẻ head trong resources/views/layouts/mylayout.blade.php
Tương tự, nội dung tập tin resources/views/HinhChuNhat/dientich.blade.php
BÀI 10: CHỨNG THỰC Mã bài: 30.10
Giới thiệu:
Để 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.
Mục tiêu:
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. Tạo chức năng chức thực cho site
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 composer require laravel/ui Bước 4: Thực hiện lệnh php artisan ui vue --auth Bước 5: Thực hiện lệnh npm install && npm run dev
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 resources/views/auth.
Laravel cũng tạo một layout cơ bản resources/views/layouts/app.blade.php cho ứng dụng.
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:
25. Khảo sát các trang của chức năng chứng thực
Trang đăng nhập (http://domain/login)
Trang reset mật khẩu (http://domain/password/reset)
Trang đăng ký tài khoản (http://domain/register)
26. Tạo table quản lý người dùng
Dùng lệnh migrate của artisan để tạo table quản lý tài khoản.
Truy cập vào phpmyadmin để xem kết quả. Laravel đã tạo cho chúng ta table users để quản lý thông tin người dùng, cấu trúc theo hình bên dưới.
27. Đăng ký tài khoản
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.
28. Tùy biến trang mặc định
Sau khi chứng thực thành công, người dùng sẽ được chuyển hướng đến địa chỉ / home. Chúng ta có thể cấu hình lại địa chỉ này bằng cách thay đổi thuộc tính
redirectTo bên trong các LoginController, RegisterController, ResetPasswordController, và VerificationController.
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 redirectTo
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 redirectTo
Thực hiện logout rồi đăng ký một tài khoản mới và xem kết quả.
29. Truy cập yêu cầu chứng thực
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 ->middleware('auth') 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 middleware('auth') bên trong phương thức khởi tạo
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 only ngay sau hàm middleware.
Truy cập vào địa chỉ http://domain/chude được phép truy cập
Truy cập vào http://domain/chude/create và http://domain/chude/1/edit bị chuyển hướng đến trang login
BÀI 11: SESSION Mã bài: 30.11
BÀI 12: QUẢN LÝ NGƯỜI DÙNG Mã bài: 30.12
BÀI 13: GỬI EMAIL VÀ UPLOAD TẬP TIN Mã bài: 30.13
TÀI LIỆU THAM KHẢO [1]. https://laravel.com/docs