• Không có kết quả nào được tìm thấy

GIÁO TRÌNH

N/A
N/A
Protected

Academic year: 2022

Chia sẻ "GIÁO TRÌNH"

Copied!
68
0
0

Loading.... (view fulltext now)

Văn bản

(1)

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)

(2)

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.

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

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

(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à 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

(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à 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:

(11)

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.

(12)

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

(13)

Bước 6: chọn tập tin php.exe trong gói XAMPP

Bước 7: chọn Next để tiếp tục

(14)

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

(15)

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

(16)

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

(17)

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.

(18)

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”

(19)

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ả.

(20)

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?

(21)

2.4. Lệnh để chạy Laravel site?

(22)

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

(23)

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.

(24)

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

(25)

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

(26)

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.

(27)

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ý.

(28)

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.

(29)

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.

(30)

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ố:

(31)

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

(32)

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.

(33)

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

(34)

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

(35)

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ý.

(36)

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

(37)

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.

(38)

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ả.

(39)

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

(40)

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

(41)

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ụ:

(42)

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

(43)

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.

(44)

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.

(45)

Bước 2: Cập nhật hàm edit

Bước 3: Tạo tập tin resources/chude/edit.blade.php

(46)

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.

(47)

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.

(48)

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

(49)

 Duyệt các dòng dữ liệu

 get: xem table

 first

 value

 pluck

 chunk, chunkById + chunk:

+ chunkById

(50)

 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

(51)

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

(52)

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.

(53)

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

(54)
(55)

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.

(56)

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

(57)

Khai báo s d ngử ụ blade template

Sửa nội dung của thẻ head trong resources/views/layouts/mylayout.blade.php

(58)

Tương tự, nội dung tập tin resources/views/HinhChuNhat/dientich.blade.php

(59)

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.

(60)

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)

(61)

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.

(62)

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

(63)

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

(64)

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

(65)

BÀI 11: SESSION Mã bài: 30.11

(66)

BÀI 12: QUẢN LÝ NGƯỜI DÙNG Mã bài: 30.12

(67)

BÀI 13: GỬI EMAIL VÀ UPLOAD TẬP TIN Mã bài: 30.13

(68)

TÀI LIỆU THAM KHẢO [1]. https://laravel.com/docs

Tài liệu tham khảo

Tài liệu liên quan

Bài báo này đề cập những khó khăn của giáo viên Tiểu học trong việc dạy một số bài học thực hành trong môn học Tự nhiên- Xã hội và giới thiệu một Kế hoạch dạy học như

Sau đây là đánh giá của SV về mức độ tham gia và mức độ hiệu quả của các hoạt động này đối với việc nâng cao KN thiết lập quan hệ với GV và HS của SV trong quá

Thông qua việc nghiên cứu sự tác động của công tác đánh giá thực hiện công việc theo Thẻ điểm cân bằng đến kết quả thực hiện công việc của đội ngũ nhân viên tại

- Cuộc đời như một con đê dài hun hút và mỗi người đều phải đi trên con đê của riêng mình. Nhiệm vụ của chúng ta là phải đi qua những “bóng nắng, bóng râm” đó để

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

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

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

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