ĐẶT VẤN ĐỀ VÀ ĐỊNH HƯỚNG GIẢI PHÁP 1.1 Lý do chọn đề tài 5|Page Downloaded by ANH LE (bachvan14@gmail.com) lOMoARcPSD|39108650 Dựa trên vấn đề về nhu cầu đi du lịch của mọi người hiện nay, cùng với những ưu điểm vượt trội của Laravel framework nên em muốn xây dựng một website tour du lịch bằng Laravel. Website này giúp khách hàng có thể tìm kiếm, tham khảo, đặt các tour du lịch của công ty và giúp người quản trị dễ dàng quản lý các chương trình tour, dễ dàng cập nhật thay đổi để website của công ty luôn luôn mới mẻ, thu hút khách hàng đến với website. Với việc xây dựng website bằng Laravel giúp em hiểu rõ hơn về Larvel framework.2 Mục đích c甃ऀa đề tài Tìm hiểu và xây dựng website tour du lịch cho phép người dùng có thể đặt tour, tìm kiếm các tour du lịch khác nhau dễ dàng, nhanh chóng, giúp nhân viên có thể duyệt đơn đặt tour và xem các thống kê trong công ty, giúp người quản lý có thể quản lý các dịch vụ của công ty đơn giản hơn.2 Định hướng giải pháp Hiện nay nước ta có rất nhiều website tour du lịch như: https://dulichviet.vn, https://www.vn/, http://newstartour.com, http://dulichhanoi.vn… Đa số các trang web này có cấu trúc và tổ chức thông tin cố định, không thay đổi hoặc rất ít thay đổi chủ yếu mang tính chất giới thiệu công ty và sản phẩm dịch vụ của họ. Các trang web này hầu hết được thiết kế bằng ASP.NET là framework được phát triển bởi Microsoft.
Ngoài những tính năng vượt trội công nghệ ASP.NET có 2 nhược điểm lớn là không được hỗ trợ chạy trên hệ điều hành linux và không được hỗ trợ Visual Studio trong suốt quá trình viết code.1 Nội dung đề tài Xây dựng các chức năng website phía client gồm: - Khách hàng có thể xem tour, đặt tour. - Khách hàng có thể thanh toán tour đã đặt. - Khách hàng có thể đăng ký làm thành viên và quản lý thông tin cá nhân của mình. - Khách hàng có thể gửi phản hồi về công ty.
Xây dựng các chức năng website cho người quản trị gồm: - Tìm kiếm các đơn đặt chỗ đã được xác nhận hay chưa xác nhận. 6|Page Downloaded by ANH LE (bachvan14@gmail.com) lOMoARcPSD|39108650 - Xác nhận đơn đặt chỗ hợp lệ, chỉnh sửa thông tin khách hàng và thông tin đặt chỗ trên từng đơn cụ thể. - Thống kê tình hình đặt chỗ của từng tour, xem danh sách khách hàng tham gia các tour đó. - Thay đổi, thêm mới hoặc xóa bỏ thông tin, hình ảnh về các điểm du lịch ở các địa phương khác nhau mà công ty muốn giới thiệu cho khách hàng.
- Theo dõi tình hình liên hệ thông qua website của khách hàng, để đáp ứng kịp thời nhu cầu của họ.2 Lựa chọn công nghệ Website này em xây dựng bằng Laravel framework vì: - Tổ chức file và cấu trúc code rõ ràng - Hệ thống thư viện và công cụ phong phú - Form Validation - Code ít hơn, nhưng làm được nhiều việc hơn - Mô hình MVC rõ ràng, dễ bảo trì - Chức năng hỗ trợ bảo mật, validate dữ liệu, SQL Injection,… - Template phong phú, thư viện form helper giúp xây dựng form nhanh và bảo mật - Hỗ trợ đường dẫn thân thiện (Friendly Url) - Bảo mật session, cookie,… 7|Page Downloaded by ANH LE (bachvan14@gmail.com) lOMoARcPSD|39108650 CHƯƠNG II.1 Giới thiệu Laravel framework 2.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, cho phép đóng gói module và quản lý các pakage phụ thuộc, hỗ trợ 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. Hiện tại, Laravel là PHP Framework được sử dụng phổ biến nhất trên thế giới vì những ưu điểm vượt trội tận dụng các kỹ thuật Design Pattern, các công nghệ mới nhất của PHP và rất dễ dàng tiếp cận và sử dụng nó. Điểm yếu của Laravel là không hỗ trợ các phiên bản PHP cũ vì thế các website có nền tảng PHP version thấp hơn khá là khó khi có ý định chuyển sang Laravel và phải luôn cập nhật các thông tin mới nhất về PHP để áp dụng vào Laravel.
Cấu trúc thư mục Laravel phiên bản 5.7 8|Page Downloaded by ANH LE (bachvan14@gmail.com) lOMoARcPSD|39108650 Hình 1: Cấu trúc thư mục Laravel app là thư mục chứa tất cả các thư mục, các tập tin php, các lớp thư viện, thư viện, models. o Console thư mục chứa các tập tin định nghĩa các lệnh thực thi trên Artisan. o Exceptions thư mục chứa các tập tin quản lý, điều hướng lỗi. o Http Controllers là thư mục chứa các tập tin controllers.
Middleware là thư mục chưa các tập tin lọc và ngăn chặn các requests.php là tập tin cấu hình, định nghĩa Middleware hoặc nhóm Middleware. o Providers chứa tất cả các service providers ứng dụng. Service providers khởi động ứng dụng bằng các services trong service container, đăng ký events, hoặc thực hiện bất kỳ một công việc khác để chuẩn bị cho request đến ứng dụng. 9|Page Downloaded by ANH LE (bachvan14@gmail.com) lOMoARcPSD|39108650 bootstrap thư mục chứa tập tin điều hướng khởi động hệ thống, thường thì chúng ta không làm gì đến nó.
config chứa mọi tập tin cấu hình của Laravel. database chứa các thư mục tập tin về CSDL. o Migrations chứa các tập tin định nghĩa khởi tạo và sửa bảng. o Seeds chứa các tập tin định nghĩa dữ liệu thêm vào CSDL.
o Factories chứa các tập tin định nghĩa các cột bảng dữ liệu để tạo ra các dữ liệu ảo phục vụ cho kiểm thử. public chính là webroot người dùng sẽ truy cập vào đây, đây cũng là nơi chứa các tập tin css, js, image. resources chứa các tập tin giao diện (js, css,…), views, ngôn ngữ. storage chứ các tập tin hệ thống như upload, cache, session, cookie, log… routes là thư mục chứa các tập tin định nghĩa các router, xử lý router hoặc điều hướng router bao gồm 3 loại là web, api và console.
tests chứa các tập tin định nghĩa tests. vendor thư mục của composer.example là 2 tập tin cấu hình chính của Laravel như key app, tên app, url app, email, env mode, CSDL hay bật tắt debug.lock tập tin của composer.js tập tin cấu hình của nodejs chứa các package cần thiết cho projects.js là tập tin gulp builder.xml là tập tin để artisan trỏ đến tạo server khi gõ lệnh php artisan server Artisan tập tin thực thi lệnh của Laravel, cũng là tập tin mà chúng ta tương tác nhiều nhất.2 Tại sao chọn Laravel framework - 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 10 | P a g e Downloaded by ANH LE (bachvan14@gmail.com) lOMoARcPSD|39108650 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, ta 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. - 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ụ. - Laravel sử dụng MVC pattern để xây dựng framework.
Nó đảm bảo rằng các code được trình bày logic và hợp lý. Dễ dàng để có thể hiểu được nó. Vì vậy nó làm cho dự án web được trở nên dễ quản lý cũng như phát triển rất nhiều. - Laravel 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.
- Luôn đổi mới, tích cực và sáng tạo.2 Mô hình MVC Mô hình MVC (model, view, controller) là mô hình chuẩn cho ứng dụng web được sử dụng nhiều nhất ngày nay. Mô hình MVC được sử dụng lần đầu tiên trong Smalltalk, sau đó được sử dụng phổ biến trong ngôn ngữ lập trình Java. Hiện nay, đã có hơn hàng chục PHP framework dựa trên mô hình này. Mô hình MVC là viết tắt của 3 chữ Model, View, Controller.
Mô hình này tách một ứng dụng web ra làm 3 thành phần đảm nhiệm chức năng tách biệt, thuận tiện cho việc xử lý và bảo trì. Model: có nhiệm vụ thao tác với cơ sở dữ liệu, nghĩa là nó sẽ chứa tất cả các hàm, các phương thức truy vấn trực tiếp với dữ liệu và controller sẽ thông qua các hàm, phương thức đó để lấy dữ liệu rồi gửi qua View. View: có nhiệm vụ tiếp nhận dữ liệu từ controller và hiển thị nội dung sang các đoạn mã HTML, có thể hiểu nôm na đây người ta còn gọi là thành phần giao diện. Controller: đóng vài trò trung gian giữa Model và View.
Nó có nhiệm vụ tiếp nhận yêu cầu từ người dùng sau đó xử lý request, load model tương ứng và gửi data qua view tương ứng rồi trả kết quả về cho người dùng. 11 | P a g e Downloaded by ANH LE (bachvan14@gmail.com) lOMoARcPSD|39108650 Hình 2: Mô hình MVC trong Laravel Người dùng sử dụng trình duyệt web (Browser) yêu cầu truy cập vào địa chỉ website. Route sẽ phân tích xem đường dẫn (link) sẽ truy cập đến Controller nào. Controller sẽ truy cập vào Model để lấy dữ liệu từ cơ sở dữ liệu (Database), sau đó trả về dữ liệu cho Controller.
Controller sẽ trả dữ liệu ra View hoặc trả dữ liệu dạng JSON cho người dùng. View sẽ xuất dữ liệu ra màn hình cho người dùng xem. Ưu điểm: Hệ thống phân ra từng phần nên dễ dáng phát triển. Chia thành nhiều modun nhỏ nên nhiều người có thể làm chung dự án.
Vấn đề bảo trì cũng tương đối tốt, dễ nâng cấp. Dễ dàng rà soát lỗi trong quá trình xây dựng. Nhược điểm: Hệ thống sẽ chạy chậm hơn PHP thuần, tuy nhiên nó ko phải là vấn đề.