Giáo trình Lập trình web với Laravel FrameWork - Trình độ: Cao đẳng - Trường Cao đẳng kỹ thuật công nghệ

docx 69 trang Gia Huy 16/05/2022 4550
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Lập trình web với Laravel FrameWork - Trình độ: Cao đẳng - Trường Cao đẳng kỹ thuật công nghệ", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • docxgiao_trinh_lap_trinh_web_voi_laravel_framework_trinh_do_cao.docx

Nội dung text: Giáo trình Lập trình web với Laravel FrameWork - Trình độ: Cao đẳng - Trường Cao đẳng kỹ thuật công nghệ

  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) BÀ RỊA – VŨNG TÀU, NĂM 2020 1
  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 Bài 11: Session Bài 12: Quản lý người dùng Bài 13: Gửi email và upload tập tin Trong quá trình biên soạn, chắc chắn giáo trình còn nhiều thiếu sót. Tác giả rất mong nhận được ý kiến đóng góp của quý thầy/cô và các em học sinh, sinh viên để tiếp tục hoàn thiện hơn. 1
  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 2
  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 BÀI 4: MIDDLEWARE 22 1. Khái niệm 22 2. Định nghĩa Middleware 22 2.1. Tạo Middleware 22 2.2. Middleware trước và sau 24 3. Đăng ký Middleware 25 3
  6. 3.1. Đăng ký toàn cục (Global Middleware) 25 3.2. Đăng ký đến route 25 3.3. Gom nhóm Middleware 26 3.4. Sắp xếp thứ tự Middleware 27 4. Middleware có tham số 27 5. Hàm terminate 28 BÀI 5: CONTROLLER 30 1. Khái niệm 30 2. Tạo controller 30 3. Định nghĩa hàm (hành động) của controller 31 4. Tạo view cho hàm của controller 32 5. Truyền dữ liệu route, controller, view 32 6. Single Action Controllers (Controller chỉ có một hàm) 34 7. Controller Middleware 36 BÀI 6: RESOURCE CONTROLLER 37 1. Khái niệm 37 2. Tạo Resource controller 38 3. Xử lý hàm index hiển thị danh sách chủ đề 40 4. Xử lý hàm create và store để thêm dữ liệu 40 5. Xử lý hàm edit và update để sửa dữ liệu 41 6. Xử lý hàm destroy để xóa dữ liệu 43 CÂU HỎI, BÀI TẬP 43 BÀI 7: TRUY XUẤT CSDL 44 1. Cấu hình đăng nhập CSDL 44 2. Thực hiện câu lệnh SQL đơn giản 45 3. Query Builder 45 3.1. Giới thiệu 45 3.2. Các hàm đọc kết qủa 45 4
  7. 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 TÀI LIỆU THAM KHẢO 65 5
  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 + 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 6
  9. 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 + Phân tích cẩn thận giao diện mẫu trước khi xây dựng blade template + Cẩn thận tránh hiển thị thông tin người dùng ngoài ý muốn + 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: 7
  10. 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.1. Các thành phần trong mô hình MVC 9
  11. 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 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 10
  12. 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 8: chọn Install bắt đầu cài đặt 11
  13. 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 12
  14. 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 13
  15. 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 14
  16. 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. 15
  17. 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” 16
  18. Bước 2: laravel new Cách 2: Bằng lệnh create-project của Composer composer create-project prefer-dist laravel/laravel 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ỉ để xem kết quả. 17
  19. 2. 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 3. 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? 18
  20. 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 để 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 19
  21. Truy cập lại trang để xem kết quả. Ví dụ: route được thực hiện bởi một controller hoặc hoặc 2. 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ỉ hoặc sẽ hiển thị cùng một kết quả trên trình duyệt. 3. Route có tham số Kiểm tra: truy cập trang để xem kết quả. 20
  22. 4. Đặt tên cho route Sử dụng route đã được đặt tên: Xem thêm: The Basics Routing 21
  23. 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 middleware này đều nằm trong thư mục app/Http/Middleware. 2. Định nghĩa Middleware 2.1. Tạo Middleware Ví dụ: Tạo middleware kiểm tra tuổi. Bước 1: dùng lệnh make:middleware Artisan php artisan make:middleware TênMiddleware 22
  24. 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. 23
  25. 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ý. 24
  26. 3. Đă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ỉ và để 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. 25
  27. 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. Các nhóm middleware có thể được đăng ký đến các route hoặc các action bằng cách sử dụng cú pháp tương tự như middleware đơn lẻ. Việc gom nhóm middleware giúp thuận lợi hơn khi đăng ký nhiều middleware một lúc. 26
  28. 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. 4. Middleware có tham số Middleware có thể nhận tham số truyền vào. Định nghĩa middleware có tham số: 27
  29. Sử dụng middleware có tham số: 5. 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 HTTP đã được gửi đến trình duyệt. Nếu muốn phương thức kết thúc trên middleware và máy chủ web đang sử dụng FastCGI, phương thức kết thúc sẽ tự động được gọi sau khi phản hồi được gửi đến trình duyệt: 28
  30. 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. 29
  31. 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 2. Tạo controller Dùng lệnh: php artisan make:controller 30
  32. Kết quả: có được tập tin app/Http/Controllers/SanPhamController.php 3. Định nghĩa hàm (hành động) của controller Kiểm tra: truy cập trang để xem kết quả Cập nhật lại hàm index để trả về một view 31
  33. 4. 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 để xem kết quả 5. 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à: {d}/{r}: được chuyển cho hàm chuvi trong HinhChuNhatController xử lý. {d}/{r}: được chuyển cho hàm dientich trong HinhChuNhatController xử lý. {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ỉ Bước 2: Tạo HinhChuNhat controller 32
  34. 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. Gửi dữ liệu cho view 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 33
  35. Thực hiện tương tự cho tập tin resources/views/HinhChuNhat/dientich.blade.php 6. 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. Controller ShowProfile được tạo sẵn duy nhất một hàm __invoke. Bước 2: cập nhật lại nội dung tập tin như sau: 34
  36. 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ỉ để xem kết quả. 35
  37. 7. 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 nghĩa lớp middleware. 36
  38. 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 37
  39. 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 2. 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ụ: 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 Xác nhận tạo model ChuDe (nếu chưa có model): yes 38
  40. 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 39
  41. 3. 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ả 4. 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. Bước 2: Tạo tập tin app/resources/chude/create.blade.php chứa form cho phép người dùng nhập dữ liệu mới. Laravel có cơ chế tự bảo vệ nhằm ngăn chặn việc xử lý dữ liệu trái phép được gửi từ bên ngoài. Theo đó, các form trong Laravel phải được đặt @csrf bên trong nó. 40
  42. 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. 5. 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. 41
  43. Bước 2: Cập nhật hàm edit Bước 3: Tạo tập tin resources/chude/edit.blade.php 42
  44. 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 6. 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. 43
  45. 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. 44
  46. 2. Thực hiện câu lệnh SQL đơn giản 3. 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 45
  47. Duyệt các dòng dữ liệu get: xem table first value pluck chunk, chunkById + chunk: + chunkById count, max, min, avg, sum 46
  48. 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 47
  49. 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 48
  50. 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. 49
  51. Truy cập trang để 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 Truy cập lại trang để xem kết quả. CÂU HỎI, BÀI TẬP 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 Trên mỗi trang, hiển thị 5 liên kết trang và các liên kết đến trang đầu, trang cuối. 50
  52. 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. 52
  53. 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 53
  54. Khai báo sử dụng blade template Sửa nội dung của thẻ head trong resources/views/layouts/mylayout.blade.php Cập nhật lại tập tin resources/views/HinhChuNhat/chuvi.blade.php 54
  55. Tương tự, nội dung tập tin resources/views/HinhChuNhat/dientich.blade.php 55
  56. 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. 56
  57. 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: 2. Khảo sát các trang của chức năng chứng thực Trang đăng nhập ( Trang reset mật khẩu ( Trang đăng ký tài khoản ( 57
  58. 3. 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. 58
  59. 4. Đă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. 5. 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 59
  60. 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ỉ 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ả. 6. 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 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ỉ để 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 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 Bước 1: Mở tập tin /app/Http/Controller/ChuDeController.php Bước 2: Tạo hàm __construct 60
  61. Truy cập vào địa chỉ và để 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ỉ được phép truy cập Truy cập vào và bị chuyển hướng đến trang login 61
  62. BÀI 11: SESSION Mã bài: 30.11 62
  63. BÀI 12: QUẢN LÝ NGƯỜI DÙNG Mã bài: 30.12 63
  64. BÀI 13: GỬI EMAIL VÀ UPLOAD TẬP TIN Mã bài: 30.13 64
  65. TÀI LIỆU THAM KHẢO [1]. 65