Artisan là một phụ tá đắc lực trong quá trình phát triển ứng dụng, giúp các công việc như tối ưu hóa ứng dụng, migrate dữ liệu, tạo các template, gọi các ứng dụng khác trong xử lý song s
Trang 1LỜI CẢM ƠN
Sau một thời gian học tập, nghiên cứu và triển khai khóa luận tốt nghiệp:
“Xây dựng phần mềm quản lý học sinh mầm non bán trú”, đến nay tôi đã
hoàn thành khóa luận tốt nghiệp của mình
Tôi xin bày tỏ tấm lòng biết ơn sâu sắc nhất tới ThS Phan Trung Kiên đã
trực tiếp hướng dẫn, chỉ bảo tận tình trong suốt quá trình tôi thực hiện khóa luận tốt nghiệp này
Đồng thời tôi cũng chân thành cảm ơn tới lãnh đạo Nhà trường, Ban chủ nhiệm Khoa cùng các thầy cô giáo đã giúp đỡ, tạo điều kiện để tôi có cơ hội nghiên cứu, học tập và hoàn thành khóa luận tốt nghiệp này
Do hạn chế về trình độ chuyên môn và thời gian thực hiện nên đề tài không tránh khỏi những thiếu sót, rất mong nhận được sự góp ý của thầy cô để tôi có thể hoàn thành tốt nhất đề tài nghiên cứu này
Xin chân thành cảm ơn!
Sơn La, tháng 5 năm 2018
Sinh viên
Đỗ Hồng Nhung
Trang 2MỤC LỤC
MỞ ĐẦU 1
1 Lý do chọn đề tài 1
2 Mục đích nghiên cứu 1
3 Đối tượng nghiên cứu 1
4 Phạm vi nghiên cứu 1
5 Phương pháp nghiên cứu 1
6 Bố cục đề tài 2
CHƯƠNG 1: TỔNG QUAN VỀ LARAVEL FRAMEWORK 3
1.1 Giới thiệu về Laravel Framework 3
1.1.1 Khái niệm 3
1.1.2 Lịch sử phát triển của Laravel 4
1.1.3 Ưu điểm của Laravel 6
1.1.4 Cài đặt Laravel với Laragon 7
1.1.5 Cài đặt Laragon 8
1.1.6 Composer 14
1.1.7 Cấu trúc thư mục Laravel Framework 16
1.2 Các thành phần cơ bản của Laravel Framework 17
1.2.1 Route 17
1.2.1.2 Sử dụng route trong Laravel 17
1.2.2 View 19
1.2.3 Controller 20
1.2.4 Laravel Middleware 21
1.3 Thao tác với cơ sở dữ liệu 22
1.3.1 Cấu hình kết nối cơ sở dữ liệu trong Laravel Framework 22
1.3.2 Thực hiện chạy cây lệnh truy vấn 23
1.3.3 Database Transactions 23
1.3.4 Accessing Connections 23
1.4 Laravel Eloquent ORM 24
1.4.1 Khái niệm 24
Trang 31.4.2 Cách sử dụng 24
1.4.3 Một số query đơn giản 24
CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG QUẢN LÝ HỌC SINH MẦM NON BÁN TRÚ 26
2.1 Mô tả hệ thống 26
2.1.1 Các quy trình nghiệp vụ 26
2.1.2 Nhiệm vụ của hệ thống 26
2.2 Liệt kê và đặc tả các ca sử dụng 26
2.2.1 Use case 26
2.2.2 Đặc tả ca sử dụng 27
2.3 Biểu đồ CA 30
2.4 Biểu đồ hoạt động 31
2.4.1 Đăng nhập 31
2.4.2 Quản lý thông tin 32
2.5 Biểu đồ trình tự 33
2.5.1 Đăng nhập 33
2.5.2 Thêm mới (học sinh, giáo viên, món ăn, thực đơn) 34
2.5.3 Sửa thông tin (học sinh, giáo viên, món ăn, thực đơn) 34
2.5.4 Hiển thị danh sách (học sinh, giáo viên, món ăn, thực đơn) 35
2.6 Biểu đồ lớp chi tiết 36
2.7 Thiết kế cơ sở dữ liệu 36
2.7.1 Người quản trị 36
2.7.2 Giáo viên 37
2.7.3 Học sinh 37
2.7.4 Món ăn 38
2.7.5 Nhóm 38
2.7.6 Suất ăn 38
2.7.7 Thực đơn 39
CHƯƠNG 3: PHẦN MỀM QUẢN LÝ HỌC SINH MẦN NON BÁN TRÚ 40
Trang 43.1 Thiết kế giao diện 40
3.1.1 Trang đăng nhập 40
3.1.2 Khung hiển thị của website 40
3.1.3 Quản lý sinh 41
3.1.4 Quản lý giáo viên 41
3.1.5 Quản lý món ăn 42
3.1.6 Quản lý thực đơn 43
3.1.7 Quản lý nhóm lớp 44
3.1.8 Quản trị viên 45
3.2 Cài đặt một số chức năng 46
3.2.1 Đăng nhập 46
3.2.2 Trang chủ 47
3.2.3 Danh sách học sinh 47
3.2.4 Thêm mới học sinh 48
3.2.6 Quản lý món ăn 49
3.2.7 Quản lý thực đơn 49
3.2.8 Quản lý nhóm lớp 50
3.2.9 Quản trị viên 50
3.2.10 Thêm mới quản trị viên 51
KẾT LUẬN 52
TÀI LIỆU THAM KHẢO 53
Trang 5DANH MỤC HÌNH
Hình 1: Tỉ lệ người dùng Laravel so với những Framework khác 4
Hình 2: Giao diện khi khởi động cài đặt 8
Hình 3: Giao diện lựa chọn khi khởi động 9
Hình 4: Tạo dự án Laravel bằng giao diện 9
Hình 5: Giao diện thông báo những dòng lệnh chạy 10
Hình 6: Giao diện thông báo thành công và tên miền ảo 10
Hình 7: Thiết lập thành công 11
Hình 8: Thiết lập đường dẫn đến cmder trên Sublime Text 12
Hình 9: Giao diện của HeidiSQL 13
Hình 10: Trang quản trị tài khoản trên ngrok 13
Hình 11: Địa chỉ demo của dự án 14
Hình 12: Màn hình dòng lệnh trên composer 15
Hình 13: Mô hình MVC 19
Hình 14: Cơ chế hoạt động của Middleware 21
Hình 15: Kỹ thuật OMR 24
Hình 16: Biểu đồ Use Case của quản trị viên 31
Hình 17: Phân giã Use Case quản lý thông tin 31
Hình 18: Biểu đồ hoạt động đăng nhập 32
Hình 19: Biểu đồ hoạt động quản lý giáo viên 33
Hình 20: Biểu đồ trình tự đăng nhập 34
Hình 21: Biểu đồ trình tự thêm mới 34
Hình 22: Biểu đồ trình tự sửa thông tin 35
Hình 23: Biểu đồ trình tự hiển thị danh sách 35
Hình 24: Biểu đồ lớp chi tiết 36
Hình 25: Đăng nhập vào hệ thống 40
Hình 26: Khung hiển thị của website 40
Hình 27: Trang danh sách học sinh 41
Hình 28: Trang thêm mới học sinh 41
Hình 29: Trang danh sách giáo viên 42
Trang 6Hình 30: Trang Cập nhật giáo viên 42
Hình 31: Trang danh sách món ăn 42
Hình 32: Trang thêm mới món ăn 43
Hình 33: Trang danh sách thực đơn 43
Hình 34: Trang thêm mới thực đơn 44
Hình 35: Trang danh sách nhóm lớp 44
Hình 36: Trang thêm mới nhóm lớp 45
Hình 37: Trang danh sách quản trị viên 45
Hình 38: Trang thêm mới quản trị viên 46
Hình 39: Giao diện đăng nhập 46
Hình 40: Giao diện trang chủ 47
Hình 41: Giao diện danh sách học sinh 47
Hình 42: Giao diện thêm mới học sinh 48
Hình 43: Giao diện danh sách giáo viên 48
Hình 44: Giao diện danh sách món ăn 49
Hình 45: Giao diện danh sách thực đơn 49
Hình 46: Giao diện danh sách nhóm lớp 50
Hình 47: Danh sách quản trị viên 50
Hình 48: Giao diện thêm mới quản trị viên 51
Trang 7DANH MỤC BẢNG BIỂU
Bảng 1: Bảng người quản trị 37
Bảng 2: Bảng giáo viên 37
Bảng 3: Bảng học sinh 37
Bảng 4: Bảng món ăn 38
Bảng 5: Bảng nhóm lớp 38
Bảng 6: Bảng suất ăn 38
Bảng 7: Bảng thực đơn 39
Trang 8DANH MỤC CHỮ VIẾT TẮT
Trang 9Chính vì thế tôi đã chọn và thực hiện đề tài “Xây dựng phần mềm quản lý học sinh mầm non bán trú” phát triển ứng dụng web bằng Laravel
2 Mục đích nghiên cứu
- Nghiên cứu học tập về framework Laravel
- Nghiên cứu và phát triển ứng dụng “Phần mềm quản lý học sinh mầm non bán trú”
3 Đối tƣợng nghiên cứu
- Framework Laravel và công cụ Laragon
- Hệ thống quản lý học mầm non bán trú trường mầm non (trường mầm non Hoa Ban Tông Lệnh 2)
Trang 106 Bố cục đề tài
Đề tài gồm:
Mở đầu
Nội dung
- Chương 1.Tổng quan về cơ sở lý thuyết
- Chương 2 Phân tích và thiết kế hệ thống quản lý học sinh mầm non bán trú
- Chương 3 Cài đặt và thử nghiệm ứng dụng
Kết luận
Tài liệu tham khảo
Trang 11CHƯƠNG 1: TỔNG QUAN VỀ LARAVEL FRAMEWORK
1.1 Giới thiệu về Laravel Framework
1.1.1 Khái niệm
Laravel là một PHP framework mã nguồn mở và miễn phí, được phát triển bởi Taylor Otwell và nhắm vào mục tiêu hỗ trợ phát triển các ứng dụng web theo kiếm trúc Model - View - Controller (MVC) Những tính năng nổi bật của Laravel bao gồm cú pháp dễ hiểu – rõ ràng, một hệ thống đóng gói modular và quản lý gói phụ thuộc, nhiều cách khác nhau để truy cập vào các cơ sở dữ liệu quan hệ, nhiều tiện ích khác nhau hỗ trợ việc triển khai vào bảo trì ứng dụng
Vào khoảng tháng 3 năm 2015, các lập trình viên đã có một cuộc bình chọn PHP framework phổ biến nhất, Laravel đã giành vị trí quán quân cho PHP framework phổ biến nhất năm 2015, theo sau lần lượt là Symfony2, Nette, CodeIgniter, Yii2 vào một số framework khác Trước đó, Tháng 8 năm
2014, Laravel đã trở thành project PHP phổ biến nhất và được tải nhiều nhất trên Github
Mặc dù Laravel là một framework PHP tương đối mới (nó được phát hành vào năm 2011), theo khảo sát trực tuyến gần đây của Sitepoint thì nó là framework phổ biến nhất mà các nhà phát triển hay sử dụng Laravel có một hệ sinh thái rất lớn với một nền tảng giúp triển khai ứng dụng một cách nhanh chóng, trang web chính thức cung cấp nhiều hướng dẫn bằng video gọi là Laracasts
Laravel có nhiều tính năng giúp cho việc phát triển ứng dụng nhanh chóng nhất có thể Laravel sở hữu một light - weight templating engine có tên là
“Blade”, cú pháp mới hỗ trợ cho các tác vụ thường xuyên cần phải làm trong ứng dụng, chẳng hạn như authentication, sessions, queueing, caching
và RESTful routing Laravel cũng bao gồm một môi trường phát triển cục bộ gọi
là Homestead – đây thực chất là một Vagrant box được đóng gói
Trang 12Hình 1: Tỉ lệ người dùng Laravel so với những Framework khác
1.1.2 Lịch sử phát triển của Laravel
Laravel được Taylor Otwell tạo ra như một giải pháp thay thế cho CodeIgniter, cung cấp nhiều tính năng quan trọng hơn như xác thực và phân quyền Nhưng có thể Taylor vốn là một NET developer khi bắt đầu có nhu cầu làm việc với PHP khoảng vào những năm 2010 - 2011, đã chọn CodeIgniter khi
đó đang là một ngôi sao mới nổi, thậm chí lấn át cả Symfony Và Taylor nhanh chóng nhận ra những điểm khiếm khuyết ở CodeIgniter, với tài năng và kiến thức xuất sắc về design - pattern của mình, Taylor quyết định tự mình tạo ra một framework sao cho thật đơn giản, dễ hiểu, hỗ trợ lập trình viên hiện thực ý tưởng một cách nhanh nhất bằng nhiều tính năng hỗ trợ như Eloquent ORM mạnh mẽ, xác thực đơn giản, phân trang hiệu quả, và hơn thế nữa
Bản Laravel beta đầu tiên được phát hành vào ngày 9/6/2011, tiếp đó
là Laravel 1 phát hành trong cùng tháng Laravel 1 bao gồm các tính năng như
xác thực, bản địa hóa, model, view, session, định tuyến và các cơ cấu khác, nhưng vẫn còn thiếu controller, điều này làm nó chưa thật sự là một MVC
Trang 13framework đúng nghĩa
Laravel 2 được phát hành vào tháng 9 năm 2011, mang đến nhiều cải tiến
từ tác giả và cộng đồng Tính năng đáng kể bao gồm hỗ trợ controller, điều này thực sự biến Laravel 2 thành một MVC framework hoàn chỉnh, hỗ trợ Inversion
of Control (IoC), hệ thống template Blade Bên cạnh đó, có một nhược điểm là
hỗ trợ cho các gói của nhà phát triển bên thứ 3 bị gỡ bỏ
Laravel 3 được phát hành vào tháng 2 năm 2012, với một tấn tính năng
mới bao gồm giao diện dòng lệnh (CLI) tên “Artisan”, hỗ trợ nhiều hơn cho hệ thống quản trị cơ sở dữ liệu, chức năng ánh xạ cơ sở dữ liệu Migration, hỗ trợ
“bắt sự kiện” trong ứng dụng và hệ thống quản lý gói gọi là “Bundles” Lượng người dùng và sự phổ biến tăng trưởng mạnh kể từ phiên bản Laravel 3
Laravel 4 tên mã “Illuminate”, được phát hành vào tháng 5 năm 2013 Lần
này thực sự là sự lột xác của Laravel framework, di chuyển và tái cấu trúc các gói hỗ trợ vào một tập được phân phối thông qua Composer, một chương trình quản lý gói thư viện phụ thuộc độc lập của PHP Bố trí mới như vậy giúp khả năng mở rộng của Laravel 4 tốt hơn nhiều so với các phiên bản trước Ra mắt lịch phát hành chính thức mỗi sáu tháng một phiên bản nâng cấp nhỏ Các tính năng khác trong Laravel 4 bao gồm tạo và thêm dữ liệu mẫu (database seeding),
hỗ trợ hàng đợi, các kiểu gởi mail, và hỗ trợ “xóa mềm” (soft - delete: record bị lọc khỏi các truy vấn từ Eloquent mà không thực sự xóa hẳn khỏi DB)
Laravel 5 được phát hành trong tháng 2 năm 2015, như một kết quả thay
đổi đáng kể cho việc kết thúc vòng đời nâng cấp Laravel lên 4.3 Bên cạnh một loạt tính năng mới và các cải tiến như hiện tại, Laravel 5 cũng giới thiệu cấu trúc cây thư mục nội bộ cho phát triển ứng dụng mới Những tính năng mới của Laravel 5 bao gồm hỗ trợ lập lịch định kỳ thực hiện nhiệm vụ thông qua một gói tên là “Scheduler”, một lớp trừu tượng gọi là “Flysystem” cho phép điều khiển việc lưu trữ từ xa đơn giản như lưu trữ trên máy local – dễ thấy nhất là mặc định
hỗ trợ dịch vụ Amazone S3, cải tiến quản lý assets thông qua “Elixir”, cũng như đơn giản hóa quản lý xác thực với các dịch vụ bên ngoài bằng gói “Socialite”
Laravel 5.1 phát hành vào tháng 6 năm 2015, là bản phát hành đầu tiên
Trang 14nhận được hỗ trợ dài hạng (LTS) với một kết hoạch fix bug lên tới 2 năm vào hỗ trợ vá lỗi bảo mật lên tới 3 năm Các bản phát hành LTS của Laravel được lên
kế hoạch theo mỗi 2 năm
1.1.3 Ưu điểm của Laravel
Laravel có một hệ thống có kiến trúc thống nhất, khoa học và cực đơn giản giúp những người mới tiếp cận framework PHP có thể nắm bắt được ngay Các framework khác thật sự khá là khó để bắt đầu, đặc biệt là Zend, Yii Tuy rất đơn giản nhưng Laravel hoàn toàn có thể xây dựng những hệ thống ứng dụng web cực phức tạp, với hiệu năng cao
Các tài nguyên liên quan đến Laravel rất đa dạng, dễ sử dụng, kể đến có tài liệu chính thức của Laravel được chính Taylor Otwell biên soạn, tác giả của framework này muốn đưa việc lập trình lên một tầm cao mới đó là khám phá và trải nghiệm, ngoài ra cộng đồng Laravel rất lớn trên Laracast, bạn có tìm được câu trả lời cho bất kỳ tình huống nào bạn gặp phải trong Laravel hoặc tiếp cận rất nhiều các video hướng dẫn cụ thể
Trực quan, đó là những gì mọi người nói về viết mã trong Laravel, giúp chúng ta tập trung vào các nhiệm vụ chính và các đoạn mã viết trong Laravel được rõ ràng và rất dễ dàng trong bảo trì mã nguồn
Tích hợp công cụ dòng lệnh Artisan, giúp các tác vụ trong phát triển ứng dụng thật đơn giản Những người mới tiếp cận với Laravel sẽ rất ít để ý đến Artisan vì có một suy nghĩ là tại sao viết code lại liên quan đến một công cụ dòng lệnh? Artisan là một phụ tá đắc lực trong quá trình phát triển ứng dụng, giúp các công việc như tối ưu hóa ứng dụng, migrate dữ liệu, tạo các template, gọi các ứng dụng khác trong xử lý song song với hàng đợi… được thực hiện đơn giản Có lẽ do Taylor Otwell đã quen với Microsoft Visual Studio NET khi lập trình NET nên cũng mong muốn có những công cụ tốt cho những lập trình viên PHP
Bộ máy blade template thực sự rất hay, nó giúp cho làm việc giữa PHP và HTML thật đơn giản, sáng sủa và tách biệt giữa mã hiển thị và mã logic nghiệp
vụ, cái mà trước đó chỉ có thể biết đến ở NET hoặc Java
Trang 15Laravel hỗ trợ việc cài đặt các gói thư viện và bản thân nó sử dụng rất nhiều các gói thư viện khác để tạo ra các tính năng tuyệt vời, ví dụ: nếu bạn làm việc với Laravel Mix bạn sẽ nhận thấy Laravel sử dụng gói thư viện Webpack kết hợp với npm, yarn… giúp bạn tự động hóa, giảm rất nhiều các tác vụ thủ công trong quá trình build ứng dụng và triển khai sản phẩm
Luôn đổi mới, tích cực và sáng tạo đó là những mỹ từ dành cho Laravel cũng như người phát triển chính Taylor Otwell Nếu theo dõi Laravel trong thời gian dài sẽ thấy Laravel luôn thay đổi trong các phiên bản, tìm kiếm những tính năng hay, những gói thư viện tốt nhất để tích hợp vào Nếu biết đến Vue.js, Lodash, Webpack, Carbon… sẽ hiểu tại sao Laravel ngày càng củng cố vững chắc hơn vị trí số một của mình, do không những nội tại Laravel là hệ thống cực khoa học, đơn giản và cực hay mà hệ sinh thái xung quanh Laravel cũng toàn các sản phẩm số một trong lĩnh vực ngách của nó
1.1.4 Cài đặt Laravel với Laragon
Khái niệm Laragon
Laragon là một gói phần mềm tổng hợp các công cụ cần thiết do đó chỉ cần cài đặt một ứng dụng với thời gian cực nhanh là đã có ngay một môi trường phát triển Laravel Laragon hoàn toàn độc lập với hệ điều hành, do đó có thể sao chép thư mục sau cài đặt đi bất cứ đâu để chạy, thậm chí có thể đồng bộ lên cloud
Lý do chọn Laragon
Chúng ta sẽ phân tích xem tại sao không nên cài đặt môi trường Laravel theo cách truyền thống? Một môi trường làm việc với Laravel cần một số các công cụ cần thiết như sau:
Webserver, database, PHP: 3 mục này cách cài đặt nào cũng đáp ứng được
Composer, Node.js, npm, yarn: Bộ các công cụ này để quản lý các gói thư viện phụ thuộc trong dự án, đặc biệt khi làm việc với các framework PHP việc tận dụng các thư viện ngoài là cần thiết, đã tận dụng được tri thức của hàng triệu lập trình viên PHP trên toàn cầu
Công cụ dòng lệnh (command line), là công cụ rất cần thiết vì làm việc
Trang 16với Laravel chúng ta sử dụng các câu lệnh artisan giúp tiết kiệm rất nhiều thời gian Ngoài ra chúng ta cũng thường kết nối SSH đến các máy chủ để làm việc thông qua các công cụ dòng lệnh này
Git một công cụ cũng không thể thiếu trong quản lý phiên bản mã nguồn
1.1.5 Cài đặt Laragon
Phiên bản hiện tại là Laragon 3.2, tải file, chọn phiên bản phù hợp với máy tính, cài đặt và kích đúp để cài đặt Link tải về:
https://forum.laragon.org/topic/473/download-laragon
Hình 2: Giao diện khi khởi động cài đặt
Laragon có thêm một số lựa chọn như khởi động cùng hệ thống, tự động thiết lập host ảo (trước đây phải thiết lập thông qua file hosts và httpd-vhosts.conf)
Trang 17Hình 3: Giao diện lựa chọn khi khởi động
Cài đặt Laragon là rất nhanh, chỉ khoảng 3-5 phút
Trang 18Một cửa sổ yêu cầu nhập tên dự án, ví dụ ở đây nhập dự án là allaravel.com, khi click Ok, màn hình dòng lênh xuất hiện, chạy các kịch bản cài đặt dự án bao gồm:
Tạo database với tên chính là tên dự án
Tải khung dự án Laravel với phiên bản mới nhất
Tự động tạo host ảo, ví dụ dự án ở đây là allaravel.com thì sẽ tự động tạo
ra tên miền ảo http://allaravel.com.dev
Hình 5: Giao diện thông báo những dòng lệnh chạy
Khi kết thúc thông báo tên miền ảo được tạo ra
Hình 6: Giao diện thông báo thành công và tên miền ảo
Trang 19Mở trình duyệt và chạy thử http://allaravel.com.dev
Hình 7: Thiết lập thành công
Nếu không muốn sử dụng giao diện để tạo mới ứng dụng Laravel, vẫn có thể sử dụng câu lệnh composer để tạo mới dự án:
composer create-project laravel/laravel laravel-test
1.1.5.2 Các công cụ được tích hợp trong Laragon
Notepad++:
Notepad++ là một trình soạn thảo nhẹ và nhanh giúp viết code nhanh chóng, tuy nhiên còn nhiều vấn đề nếu sử dụng Notepad++ để lập trình Laravel như việc highlight code, ví dụ với Laravel Blade, Vue.js template… Khó để so sánh Notepad++ với Sublime Text hoặc chuyên nghiệp hơn như PHP Storm Laragon đã tích hợp sẵn Notepad++ do đó nếu bạn dùng trình soạn thảo này, có thể truy cập ứng dụng qua menu Tools -> Notepad++
Cmder:
Laragon tích hợp cmder một công cụ dòng lệnh tuyệt vời, nó được phát triển từ ConEmu và Clink do đó ngoài thừa hưởng những tính năng của ConEmu về giao diện thì còn cho phép chỉnh sửa các dòng lệnh giống như Bash trên Unix, Linux Cmder giúp dễ dàng copy (Ctrl+C) và paste (Ctrl+V) dễ dàng
Trang 20hơn nhiều công cụ dòng lệnh mặc định của Windows Cũng tích hợp sẵn với công cụ Git để quản lý phiên bản mã nguồn Cmder cho phép phân chia ra nhiều tab hoặc nhiều khung trên một cửa sổ với các thông tin được highlight rất dễ nhìn Để chạy được cmder bấm vào nút Terminal trên Laragon
Việc sử dụng cmder là rất nhiều khi phát triển Laravel, nếu sử dụng Sublime Text, nên thiết lập ứng dụng dòng lệnh mặc định cho Sublime Text như vậy tại bất kỳ đâu trong dự án chỉ cần một phím tắt là đã có màn hình cmder với thư mục hiện hành là thư mục gốc của dự án Các bước thiết lập như sau:
Cài đặt package Terminal, vào theo đường dẫn Preferences->Package Control->Install Package và tìm package có tên Teminal, sau khi cài đặt xong trong thư mục Preferences->Package Settings sẽ có thêm một mục Terminal,
click vào Settings – Default để thiết lập đường dẫn đến cmder
Hình 8: Thiết lập đường dẫn đến cmder trên Sublime Text
Giờ có thể sử dụng tổ hợp phím Ctrl + Shift + T để mở cmder khi đang code một class nào đó
Trang 21Hình 9: Giao diện của HeidiSQL
Ngrok:
Ngrok là gì? Ta có thể tưởng tượng một tình huống như thế này, khi vừa phát triển xong ở máy tính và muốn show cho khách hàng xem thử, bình thường cần phải upload code lên một server nào đấy, sau đó cấu hình và chuyển cho khách hàng đường dẫn đến trang demo Như vậy khá là mất công, hơn nữa cũng cần phải có sẵn một server nào đó trên Internet Ngrok giúp xử lý vấn đề này một cách đơn giản thông qua dịch vụ VPN (secure tunnel) Laragon cũng tích hợp sẵn ngrok và các công việc còn lại cần làm như sau:
Tạo tài khoản trên ngrok.com, sau khi tạo xong website sẽ chuyển hướng vào trang quản trị tài khoản như hình dưới
Hình 10: Trang quản trị tài khoản trên ngrok
Trang 22Mở cmder trên Laragon, tìm dự án cần làm lên và copy paste lệnh ngrok authtoken xxx để cài đặt mã xác thực Sau đó thực hiện lệnh ngrok http 80
Hình 11: Địa chỉ demo của dự án
Như vậy là xong, có thể cung cấp cho khách hàng địa chỉ trong ô màu đỏ, khách hàng có thể truy cập từ bất kỳ đâu trên Internet đến localhost trên máy tính của
1.1.6 Composer
1.1.6.1 Khái niệm Composer
Composer là một công cụ quản lý thư viện PHP cho các dự án, một cách chính xác hơn Composer quản lý sự phụ thuộc các tài nguyên trong dự án (dependency management), nó cho phép khai báo các thư viện mà dự án sử dụng
và nó sẽ quản lý các thư viện này Việc quản lý này bao gồm: cài đặt các thư viện yêu cầu tự động, cập nhật các thư viện khi có phiên bản mới…
Composer sẽ:
Khai báo các thư viện mà dự án sử dụng
Tìm các phiên bản của package có thể cài đặt và cần thiết cho dự án, sau
đó cài đặt chúng vào dự án (tức là tải chúng về dự án)
1.1.6.2 Yêu cầu hệ thống với Composer
Composer yêu cầu hệ thống phải cài đặt PHP với phiên bản từ 5.3.2 trở lên,
sẽ có một vài các thiết lập thông số PHP và một số các cờ trong biên dịch, các cảnh báo này sẽ được hiển thị khi cài đặt composer
Composer là một công cụ đa nền tảng do đó nó có thể chạy tốt trên các hệ điều hành hiện nay như Windows, Linux, OSX…
Trang 231.1.6.3 Cài đặt Composer trên Windows
Sử dụng bộ cài
Đây là cách đơn giản nhất, tải về file Composer-Setup.exe theo đường dẫn
sau: https://getcomposer.org/download/, tìm tải về bản composer mới nhất và tự
động thiết lập các biến môi trường PATH để bạn có thể gọi lệnh composer ở bất
kỳ đâu
Hình 12: Màn hình dòng lệnh trên composer
Cài đặt thủ công
Trang 24Tải về file composer.phar tại trang: https://getcomposer.org/download/
Tạo một file batch composer.bat để thực thi với nội dung như sau:
@php "%~dp0composer.phar" %*
Hoặc chạy lệnh sau trên màn hình dòng lệnh để tự động lưu ra file composer.bat
C:\composer>echo @php "%~dp0composer.phar" %*>composer.bat
Tiếp theo là đưa đường dẫn đến file composer.bat vào biến môi trường PATH Sau đó thử chạy một lệnh của composer để kiểm tra:
C:\Users\Admin>composer -V
Composer version 1.2.2 2018-03-03 17:43:15
1.1.7 Cấu trúc thư mục Laravel Framework
Thƣ mục app: thư mục này rất quan trọng và thường xuyên phải thao tác trong thư mục này: Nó chứa các Models, Controller, Providers
Thƣ mục bootstrap: chứa các file khởi tạo và một số file cấu hình nạp tự
động
Thƣ mục config: chứa các file cấu hình của Laravel Framework: cấu hình
database, app, mail, session
Thƣ mục public: các file tĩnh như file HTML, CSS, Javascript hay ảnh sẽ
được đưa vào thư mục này
Thƣ mục resources: chứa trang views (V của mô hình MVC), chứa các
file khác như (SASS, LESS, CoffeeScript) và các file hỗ trợ cho đa ngôn ngữ
Thƣ mục routes (từ laravel 5.2 mới có): chứa file web.php và api.php có vai trò chỉ đường cho yêu cầu (request) đi đến đâu
Thƣ mục storage : chứa các file đã biên dịch từ các file view xài Blade
template, chứa file sessions, caches và các file được sinh ra tự động của
framework
Thƣ mục tests: chứa các file test của Framework
Thƣ mục vendor: chứa các thư viện mà Composer cài đặt cho Framework Một số file con khác:
.gitignore: Git (phần mềm để quản lý sự thay đổi của source code) sử dụng
Trang 252 file này để định nghĩa thuộc tính và danh sách các file không theo dõi
Composer.json: File này chứa danh sách các dependencies (thư viện,
framework) sử dụng trong app Khi chạy câu lệnh composer install hoặc composer update thì file này sẽ là cơ sở để xác định phiên bản nào cần tải về của các thư viện, framework được liệt kê trong file này
Artisan: File này dùng để thực thi các lệnh CLI để hỗ trợ phát triển ứng
dụng
1.2 Các thành phần cơ bản của Laravel Framework
1.2.1 Route
Khái niệm route: Route trong Larvel cũng như các framework khác đều
có chức năng là định ra các dạng resquest (hiểu nôm na là url) định sẵn và cũng
có các action (hành động) do chúng ta định nghĩa cho nó
1.2.1.1 Các loại route trong Laravel
Laravel là một framework hỗ trợ rất đa dạng về route, và cũng rất dễ sử dụng Nó gồm có các loại:
Route::get nhận resquest với phương thức GET
Route::post nhận resquest với phương thức POST
Route::put nhận resquest với phương thức PUT
Route::delete nhận resquest với phương thức DELETE
Route::match kết hợp nhiều phương phức POST, GET, PUT,
Route::any nhận tất cả các phương thức
Route::group tạo ra các nhóm route
Route::controller gọi đến controller tương ứng mà ta tự định
Route::resource sử dụng với resource controller
1.2.1.2 Sử dụng route trong Laravel
Để sử dụng được route thì ta mở thư mục laravel vừa tạo sau đó chúng ta truy cập routes/web.php để bắt đầu viết code route
Route::get: Đây là route sẽ tiếp nhận các request với phương thức GET
Cú pháp:
Trang 26Route::get($url, $action);
Trong đó: $url là đường dẫn của route, $action là các hành động thực hiện trong router đó
Route::post: với loại route này thì nó không khác gì với Route::get() ngoài :
Route::get() nhận phương phương thức GET còn Route::post() nhận phương thức POST
Cú pháp:
Route::post($url,$action);
Route::match: Nếu muốn sử dụng hai phương thức GET, POST mà không
muốn dùng phương thức PUT, PATCH, DELE, thì làm sao? Nhận thấy điều
đó nên Laravel đã cho chúng ta thêm một route nữa là match route
Cú pháp:
Route::match('phuong thuc','url','action');
Trong đó:
Phương thức: có thể là một mảng POST, GET, vd: ['POST','GET']
Url: thì không khác gì như Route::get
Action: cũng không khác gì Route::get
Route::any: Sử dụng một số phương thức trong route thì dùng Route::any() ,
còn nếu như muốn dùng tất cả các phương thức thì chẳng lẽ chúng ta cứ phải viết đi viết lại 1 url với từng phương thức? Cũng vì điều này mà Laravel đã cung
cấp cho chúng ta Route::any()
Cú pháp:
Route::any($url,$action);
Cách sử dụng giống Route::get()
Trang 271.2.2 View
Hình 13: Mô hình MVC
Trong mô hình MVC, V là chữ viết tắt của View Nó giúp tách biệt giữa application logic và presentation logic giúp quản lý và phát triển mã nguồn tốt hơn Các view trong Laravel được lưu trữ trong thư mục resources/views Có thể tạo thêm các thư mục trong thư mục resources/views để phân cấp quản lý Các view có thể chứa mã HTML, CSS, Javascript phục vụ cho hiển thị nội dung cho người dùng
1.2.2.1 Tạo View trong Laravel
View trong Laravel không tạo được bằng câu lệnh php artisan mà chỉ đơn giản là tạo một file mới trong các thư mục con của resources/views với cấu trúc tên file như sau:
tên-view.blade.php
1.2.2.2 Truyền dữ liệu cho View
Truyền dữ liệu cho view giúp cho view hiển thị các nội dung động, ví dụ view hiển thị chi tiết một bài viết thì tiêu đề bài viết, nội dung mỗi bài viết khác nhau ta sẽ truyền các giá trị này cho view
Có thể truyền dữ liệu vào view bằng phương thức with, tham số truyền vào
Trang 28là một mảng giá trị
return view('fontend.news-detail')->with(['news_id' => $news_id, 'news_title' => $news_title]);
Khi đó, muốn in nội dung các giá trị này trong view chúng ta đưa các biến
này vào dấu {{ }}, xem nội dung view news-detail.blade.php nằm trong resources/views/fontend
1.2.2.3 Chia sẻ dữ liệu cho tất cả các View
Thực hiện bằng cách sử dụng phương thức share() trong phương thức boot() của service provider, là thêm vào app\Provider\AppServiceProvider.php Khi đó, trong các view bạn chỉ cần sử dụng {{ $key }} là nó sẽ in ra „value‟
1.2.3 Controller
Controller với viết tắt là chữ C trong mô hình MVC, nó thực hiện điều hướng giữa Model và View sau khi nhận request từ trình duyệt web
1.2.3.1 Tạo Controller trong Laravel
Để tạo mới một Controller ta sử dụng câu lệnh:
php artisan make:controller MyController
Sau khi thực hiện, nó sẽ tạo ra một file MyController.php trong thư mục app/Http/Controllers Khi một yêu cầu gửi đến hệ thống Laravel sẽ tìm trong
route và route sẽ gọi đến một hàm trong một Controller theo cú pháp như sau:
Route::get('base URI','controller@method');
1.2.3.2 Sử dụng các action trong Controllers
Khi làm việc với Route::controller thì cần chú ý việc đặt tên action phải tuân theo quy tắc methodUri như sau:
Method là post, get, và viết thường
Uri: Chữ cái đầu tiên của Uri sẽ bắt buộc viết in hoa, cứ 1 chữ in hoa sẽ được tính là 1 đoạn uri được phân cách bởi dấu -
Khi làm việc với Route::resource thì controller laravel hỗ trợ 8 action: index, create, store, show, edit, update, destroy nhưng trong controller không nhất thiết phải tạo đủ 8 action này
Ngoại trừ những điều trên thì action có thể đặt tên tùy ý
Trang 291.2.3.3 Sử dụng filter trong Controllers
Ngoài việc sử dụng filter ngay trong file routes.php thì khi khai báo route
có thể đặt trong controller, cụ thể là trong hàm khởi tạo function_construct của controller bằng cách sử dụng con trỏ $this trỏ tới function beforFilter (filter trước khi bất kỳ action nào được quy định được gọi) hoặc afterFilter (filter sau khi controller được gọi) Cú pháp như sau:
1
2
3
public function construct(){
$this->beforeFilter( $filter, $options); }
Trong đó:
$filter là tên của filter trong file filters.php
$option là mảng các tùy chọn trong đó:
- on: filter trên method nào
- except: filter trên tất cả các action của controller trừ action được khai báo
- only: chỉ filter trên các action được khai báo}
1.2.4 Laravel Middleware
Hình 14: Cơ chế hoạt động của Middleware
Middleware đúng như ý nghĩa từ tên gọi của nó, là đoạn code trung gian đứng giữa request và response (xem hình trên), cung cấp một cơ chế bộ lọc Ví dụ: Laravel cung cấp một middleware để xác nhận xem một người dùng đã xác thực chưa, nếu người dùng đã qua xác thực sẽ được chuyển hướng đến trang
Trang 30quản trị hoặc nếu chưa xác thực sẽ được chuyển đến trang đăng nhập
Tất cả các middleware đều nằm trong thư mục app/Http/Middleware, để tạo một middleware mới sử dụng câu lệnh:
php artisan make:middleware <middleware-name>
1.2.4.1 Đăng ký Laravel Middleware với hệ thống:
Ta cần đăng ký middleware với hệ thống trước khi sử dụng chúng, có hai loại middleware:
Global middleware là middleware sẽ được sử dụng với bất kể yêu cầu HTTP đến hệ thống, đơn giản là thêm middleware này vào thuộc tính
$middleware trong class app/Http/Kernel.php
Route middleware là gắn một middleware với một route xác định, trước khi gắn một route với một middleware phải liệt kê chúng vào thuộc tính
$routeMiddleware trong class app/Http/Kernel.php
1.3 Thao tác với cơ sở dữ liệu
Laravel kết nối tới cơ sở dữ liệu và chạy truy vấn cực kỳ đơn giản Cấu
hình nằm tại file app/config/database.php Trong file này thì định nghĩa tất cả
những loại kết nối cơ sở dữ liệu, chúng cũng có loại cơ sở kết nối mặc định Hiện tại thì Laravel hổ trợ những hệ thống cơ sở dữ liệu sau: MySQL, Postgres, SQLite, và SQL Server
1.3.1 Cấu hình kết nối cơ sở dữ liệu trong Laravel Framework
Mở file app/config/database.php và tìm tới dòng cấu hình:
'mysql' => array(
'driver' => 'mysql', 'host' => 'localhost', 'database' => 'laravel', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '',
),