BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG CÔNG THƯƠNG TP HCM KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO THỰC TẬP TỐT NGHIỆP XÂY DỰNG WEBSITE BẰNG LARAVEL Sinh viên Trần Quốc Huy MSSV 2116110027 Lớp CCQ1611A GVHD Ths Chu T[.]
BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG CÔNG THƯƠNG TP.HCM KHOA: CÔNG NGHỆ THÔNG TIN BÁO CÁO THỰC TẬP TỐT NGHIỆP XÂY DỰNG WEBSITE BẰNG LARAVEL Sinh viên: Trần Quốc Huy MSSV: 2116110027 Lớp: CCQ1611A GVHD: Ths Chu Thị Mai TP.HCM, 07/05/2019 MỤC LỤC PHẦN MỞ ĐẦU Lý chọn đề tài Mục đích nghiên cứu (các kết cần đạt được) 3 Đối tượng phạm vi nghiên cứu 4.Phương pháp nghiên cứu: PHẦN ĐỀ CƯƠNG CHI TIẾT CHƯƠNG 1: ĐẶT VẤN ĐỀ 1.1 PHP Framework gì? 1.2 Tại nên sử dụng PHP Framework? 1.3 Tại nên sử dụng Laravel Framework? CHƯƠNG 2: GIỚI THIỆU VỀ LARAVEL 2.1 Cấu trúc thư mục Laravel 2.2 Cài đặt Laravel .8 2.2.1 Cài Composer 2.2.2 Cài Laravel .9 2.3 Cấu hình cho ứng dụng .9 2.4 Chạy ứng dụng với Laravel 2.5 Route Laravel Framework 10 2.5.1 Basic Routing 10 2.5.2 Route Parameters 11 2.5.3 Route Filters 11 2.5.4 Name Route 13 2.5.5 Route Groups 14 2.5.6 Route Prefixing 14 2.6 View Laravel Framework 15 2.7 Controller Laravel Framework 16 2.7.1 Khai báo Controller Laravel Framework: .16 2.7.2 Chạy Controller theo phương thức Route::get .17 2.7.3 Implicit Controllers – Sử dụng phương thức Route::controller 17 2.7.4 RESTful Resource Controllers – Sử dụng phương thức Route::resource.18 2.7.5 Controller với Filter .20 2.8 Kết nối sở liệu 21 2.8.1 Cấu hình kết nối sở liệu Laravel Framework 21 2.8.2 Database Transactions 22 2.9 Sử dụng Query Builder 23 2.9.1 Truy vấn liệu .24 2.9.2 Join bảng liệu 26 2.9.3 Hàm Laravel Framework 27 2.9.4 Raw Expressions 27 2.9.5 Câu lệnh Inserts liệu 27 2.9.6 Câu lệnh Updates liệu .27 2.9.7 Câu lệnh Deletes liệu 27 2.9.8 Câu lệnh Union 28 2.10 Eloquent ORM 28 2.10.1 Lấy liệu 28 2.10.2 Thêm liệu (Insert) 29 2.10.3 Cập nhật liệu (Update) 29 2.10.4 Xóa liệu (Delete) .29 2.11 Sử dụng Migrations Schema Builder .30 2.11.1 Lớp Schema Builder – thao tác với bảng CSDL 30 2.11.2 Migrations – Quản lý CSDL 32 CHƯƠNG 3: 35 PHÂN TÍCH - THIẾT KẾ WEBSITE 35 Giới thiệu chương 35 Nội dung 35 CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .40 Kết luận: 40 4.1 Kết đạt .40 4.2 Hướng phát triển 40 DANH MỤC TÀI LIỆU THAM KHẢO .41 LỜI MỞ ĐẦU PHẦN MỞ ĐẦU Lý chọn đề tài Công Ty Cổ Phần 32 tiền thân Công Ty 32 - Bộ Quốc Phòng thành lập hoạt động từ năm 1980 đến Từ thành lập Xí nghiệp nhỏ chuyên sản xuất mặt hàng quân trang phục vụ Quân đội như: giầy, dép, mũ, balo, quân hàm, quân hiệu Qua trình xây dựng phát triển đến nay, Công ty trở thành Cơng ty có uy tín ngồi nước, với xí nghiệp thành viên, tổng số lao động 2000 người Ngoài sản xuất mặt hàng phục vụ cho Quân đội Công an, Cơng ty cịn sản xuất giày nam, nữ, giày vải, túi cặp loại công nghệ đại phục vụ nước xuất Công ty mở rộng kinh doanh sang lĩnh vực thương mại điện tử cần có website để kinh doanh Hiện xem cơng nghệ xây dựng web Laravel framework phổ biến Laravel framework dùng mã nguồn mở miễn phí, nên Laravel framework cài đặt hầu hết Web Server thông dụng Apache, IIS… dễ học biết HTML, C, OOP (vì php phát triển tảng C, OOP ), có nhiều websever cấu hình đơn giản XAMPP, WAMPP,… thư viện phong phú (Joomla, wordpress…), có tính bảo mật, thích hợp cho làm việc nhóm Tuy nhiên ngồi ưu điểm bên cách Laravel framework cịn có nhược điểm chạy ứng dụng web, mã nguồn không đẹp tool Mục đích nghiên cứu (các kết cần đạt được) Xây dựng website kinh doanh giầy dép Giới thiệu trưng bày mặt hàng Nhanh chóng hiệu Đảm bảo xác, bảo mật cao, tiện lợi dễ dàng sử dụng cho khách hàng Thuận tiện cho việc bán mua hàng Đối tượng phạm vi nghiên cứu Đối tượng nghiên cứu: Laravel framework Tìm hiểu khảo sát qui trình bán hàng qua mạng để có sở xây dựng trang web bán hàng Phạm vi nghiên cứu: xây dựng trang web bán lẻ, chuyên bán sản phẩm sản phẩm giầy dép lãnh thổ việt nam 4.Phương pháp nghiên cứu: Phương pháp thông kê, thu thập thông tin, số liệu Phương pháp phân tích tổng hợp tài liệu để xây dựng website Quá trình tin học để xây dựng website thương mại điện tử NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ……………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… ………………………………………………………………………………… Tp.Hồ Chí Minh, ngày … tháng … năm … Giáo viên hướng dẫn (Ký tên ghi rõ họ tên) PHẦN ĐỀ CƯƠNG CHI TIẾT CHƯƠNG 1: ĐẶT VẤN ĐỀ 1.1 PHP Framework gì? PHP ngơn ngữ script phổ biến lý do: linh hoạt, dễ sử dụng, dễ học, v…v việc viết mã PHP, hay ngôn ngữ (lập trình) khác, trở nên đơn điệu lủng củng Đó lúc PHP Framework giúp bạn PHP Frameworks làm cho phát triển ứng dụng web viết ngôn ngữ PHP trở nên trôi chảy hơn, cách cung cấp cấu trúc để xây dựng ứng dụng Hay nói cách khác, PHP Framework giúp đỡ bạn thúc đẩy nhanh chóng q trình phát triển ứng dụng, giúp bạn tiết kiệm thời gian, tăng ổn định cho ứng dụng, giảm thiểu số lần phải viết lại mã cho lập trình viên Ngồi Framework cịn giúp người bắt đầu xây dựng ứng dụng ổn định nhờ việc tương tác xác Database, mã (PHP) giao diện (HTML) cách riêng biệt Điều cho phép bạn dành nhiều thời gian để tạo ứng dụng web, phí thời gian để viết đoạn mã lặp lại project Ý tưởng chung đằng sau cách thức làm việc PHP Framework kể đến Model View Controller (MVC) MVC mơ hình (kiến trúc) lập trình, cho phép tách biệt mã nghiệp vụ giao diện thành phần riêng biệt, điều đồng nghĩa với việc ta chỉnh sửa chúng cách riêng lẻ Trong cụm từ MVC thì: Model (M) hiểu phần xử lý thao tác nghiệp vụ (business logic), View hiểu phần xử lý lớp giao diện (presentation layer), Controller làm nhiệm vụ lọc request đc gọi từ user, có chức route: điều chỉnh, phân luồng yêu cầu để gọi Model & View thích hợp Về bản, MVC chia nhỏ trình xử lý ứng dụng, nên bạn làm việc thành phần riêng lẻ, thành phần khác không bị ảnh hưởng tới Thực chất, điều giúp đỡ bạn lập trình PHP nhanh phức tạp 1.2 Tại nên sử dụng PHP Framework? Có nhiều lý khác để lập trình viên sử dụng PHP Framework, lý khả giúp lập trình viền tăng tốc trình phát triển ứng dụng Việc sử dụng lại mã lệnh giống nhiều project giúp bạn tiết kiệm thời gian công sức cách đáng kể Một Framework cung cấp sẵn module tảng cần thiết để xây dựng project, thế, lập trình viên tận dụng thời gian để phát triển ứng dụng thực tế, thời gian để xây dựng lại tảng project 1.3 Tại nên sử dụng Laravel Framework? Có 20 Framework mã nguồn mở PHP khác nhau, số Laravel Framework phổ biến nhất, xếp sau là: PhaIcon, Symfony2, CodeIgniter, Yii,… Nó Framework mẻ bù lại có "hướng dẫn sử dụng" đầy đủ, rõ ràng dễ hiểu với cộng đồng phát triển rộng lớn toàn giới Nếu bạn làm việc với Framework khác người bắt đầu "chập chửng" tìm hiểu PHP Framework việc tiếp cận Laravel Framework vấn đề khó khăn Ưu điểm là: Autoload theo namespace, Các lệnh tương tác với sở liệu ngắn gọn thân thiện, phân trang laravel đơn giản, việc quản lý layout thật giản đơn với Laravel, dễ dàng tích hợp thư viện Zend gói bundle (giống moduel) vào project, có nhiều gói bundle đc đồng đạo giới build sẵn share github nhiều ưu điểm khác đợi bạn khám phá… CHƯƠNG 2: GIỚI THIỆU VỀ LARAVEL 2.1 Cấu trúc thư mục Laravel Một dự án web viết Laravel có cấu trúc thư mục sau: Hình 2.1: Thư mục Laravel Framework Hình 2.2: Chức thư mục Như đề cập trên, thư mục /app nguồn ứng dụng, cần tìm hiểu sâu chúng: Hình 2.3: Chức cụ thể thư mục app 2.2 Cài đặt Laravel 2.2.1 Cài Composer Chúng ta cài đặt Laravel composer nên bạn cần cài đặt composer trước, dùng window nên download cài đặt composer window Bạn tải composer địa chỉ: http://laravel.com/docs/4.2/installation Các bạn download cài đặt bình thường, lưu ý chỗ chọn php thơi, bạn đường dẫn đến file php.exe thư mục php XAMPP (xampp/php/php.exe) 2.2.2 Cài Laravel Bản Laravel 4.2 (Tại thời điểm viết này), yêu cầu chạy PHP>=5.4, dùng XAMPP 5.6.3 nên cài Laravel Nếu bạn muốn cài đặt cần dùng lệnh sau: composer create-project laravel/laravel tên-thư-mục-laravel-của-bạn Còn muốn install thấp dùng: composer create-project laravel/laravel tên-thư-mục-laravel-của-bạn 4.0.* Sau cài đặt xong, có cấu trúc thư mục Laravel hình 2.1 phía Để biết có cài Laravel thành cơng hay khơng thử chạy Laravel cách mở trình duyệt lên gõ địa sau: http://localhost/laravel_demo/public/ Nếu thành cơng hiển thị hình đây: Hình 2.4: Cài đặt Laravel thành cơng 2.3 Cấu hình cho ứng dụng Các bạn truy cập vào app/config/app.php chỉnh sửa lại thông tin sau: + Chỉnh lại URL,các bạn tìm tới key url chỉnh lại cho phù hợp với dự án nhé: 'url' => 'http://localhost/kienthuc24h/' + Cấu hình key,các bạn tìm tới dịng có cấu hình key mục đích lệnh tăng tính bảo mật cookie session cho website Hoặc bạn sử dụng lệnh CMD cách đường dẫn đến thư mục làm việc bạn sử dụng thư mục kienthuc24h chạy dòng lệnh sau: php artisan key:generate 2.4 Chạy ứng dụng với Laravel - Các bạn truy cập vào file app/route.php thêm nội dung vào cuối file: Route::get(‘/dang-nhap’,function(){ echo ‘Đây trang đăng nhập’; }); 10 Và bạn thử gõ lên trình duyệt đường link: http://localhost/kienthuc24h/public/dang-nhap bạn thấy kết với nội dung sau: Đây trang đăng nhập 2.5 Route Laravel Framework Mục đích router định tuyến đến controller cụ thể từ phía request người sử dụng Đối với Framework khác bạn muốn thực cơng việc thường cần xây dựng controller để xử lý phải khơng nào, Laravel bạn hồn tồn xử lý liệu phần Router Đây điểm mạnh điểm khác biệt lớn Laravel Framework Framework khác 2.5.1 Basic Routing - Các định tuyến Laravel viết app/route.php Cú pháp đơn giản định tuyến là: Route::method(‘URI’,’Function call back’) Trong thì: + URI dạng link url + Function callback: Hàm gọi tới link URI phía chạy, nơi bạn xử lý liệu + Method dạng phương thức bản: post, get, put, delete, any - POST Route: Các thao tác lấy từ form thêm liệu - GET Route: Dành cho thao tác truy cập thông thường tương đương với request PHP Ví dụ chạy link url - PUT Route: Dành cho thao tác lấy từ form cập nhật liệu - DELETE Route: Dành cho thao tác hành động xóa liệu - ANY Route: tổng hợp thao tác Trong dạng POST GET sử dụng nhiều Ví dụ: Các bạn mở file app/route.php viết dòng code sau: Route::get(‘/san-pham’, function(){ echo ‘Trang sản phẩm’; }); Tiếp theo truy cập vào đường link url với đường dẫn localhost/kienthuc24h/s an-pham (Trong kienthuc24h thư mục dự án) Khi bạn chạy link Route kiểm tra gọi tới hàm callback Sau chạy trang bạn nhận thơng báo ý muốn - Ngồi bạn cịn tùy chỉnh nhiều phần Route theo cú pháp: Route::method(‘Tên định danh’,’Tham số’); Ví dụ: Route::get(“san-pham”,”ProductController@list”); Với ví dụ có nghĩa chạy link san-pham lúc điều 11 hướng gọi tới controller ProducController phương thức (action) list 2.5.2 Route Parameters - Trong trường hợp bạn muốn gửi kèm theo tham số cho định tuyến cần khai báo theo dạng{Tên tham số} hàm callback coi tham số hàm bình thường Ví dụ: Route::get(‘/san-pham/{name}/{id}’, function($name,$id){ echo ‘Bạn xem sản phẩm’.$name.’có ID = ’.&id; }); Tiếp theo bạn truy cập vào đường link localhost/kienthuc24h/sanpham/nokia520/1 kết là: Bạn xem sản phẩm nokia520 có ID = - Ngồi bạn hồn tồn kiểm tra liệu tham số truyền vào cách sử dụng thêm phương thức where() Ví dụ: Route::get(‘/san-pham/{name}/{id}’, function($name,$id){ echo ‘Bạn xem sản phẩm’.$name.’có ID = ’.&id; })->where(array(‘name’=>’[a-z]+’,’id’=>’[0-9]+’)); Ở trường hợp ta xét với điều kiện kiểm tra sản phẩm(name) ký tự thường từ a-z id số tự nhiên từ 0-9 2.5.3 Route Filters - Đây phần lọc định tuyến, cho phép kiểm tra trước cập nhật vào đường dẫn (URI) Ứng dụng thực tế kiểm tra trạng thái đăng nhập trước cho phép truy cập vào trang - Filter chia loại before after + Before: Nghĩa request trước tới routing + After: Nghĩa request sau tới routing Trên thực tế Before thường sử dụng nhiều - Cú pháp bản: Route::filter(“tên filter”, function(){ // code xử lý }); Ví dụ: 12 Route:: filter(“checklogin”, function(){ if(session::get(‘login’)!=1){ return Redirect::to(“/dang-nhap”); } }); Đoạn code xây dựng 1Filter có tên checklogin thực kiểm tra xem biến session login có 1, ý định kiểm tra xem đăng nhập chưa Nếu chưa đăng nhập chuyển trang đăng nhập Tiếp theo ta có đoạn code: Route::get(‘/them-san-pham’, array(“before”=>”checklogin”,”uses”=> ”ProductController@store”)); Với đoạn code thêm vào khóa before tới checklogin Chính filter ta thiết lập trước đó, đẩy sang controller ProductController với action store dựa vào khóa uses - Như vậy, bạn truy cập vào link them-san-pham lúc kiểm tra Filter checklogin trước - Với link mà bạn muốn kiểm tra đăng nhập cần sử dụng “before”=>”checklogin” - Filter Laravel Framework cho phép truyền giá trị vào dựa vào cú pháp sau: Route::filter(‘Tên filter’, function($route, $request,$value){ // code xử lý, kiểm tra liệu }); + Như bạn thấy tham số thứ $value giá trị mà truyền vào, ví dụ: Route::filter(“checkId”, function($route, $request,$value){ // Xử lý liệu if($value”checkId:-1”,”uses”=>” DemoController@checkid“)); 13 + Như bạn chạy link check-id lúc gọi tới Filter checkId để kiểm tra, giá trị gửi sang bên Filter -1(checkId:-1) - Qua ví dụ bạn thấy ý nghĩa sức mạnh filter thực tế phải không Với filter ta tối giản code mức cao tái sử dụng vô đơn giản 2.5.4 Name Route - Đặt tên cho Route nhằm sử dụng linh hoạt cho ứng dụng Dễ dàng lấy thơng tin Route thơng qua tên Ví dụ: Route::get(‘/san-pham/{name}/{id}’, array(‘as’=>’product’,’uses’=>Produ ctController@view)); $url= URL::route(“product”,array(‘nokia520’,’1’)); echo “Chi tiết sản phẩm”; + as: Là tên route (product) + uses: Route sử dụng controller (ProductController) action (view) + Thư viện URL, sử dụng phương thức route với cú pháp sau: URL::route(“tên route”, array(‘chứa đối số’)); Sau chạy đoạn code có $url=/san-pham/nokia520/1 - Tiếp đến ta xây dựng controller với nội dung sau: Sau ta tạo file app/views/hoten.php với nội dung ” Tên Tính” chạy thử đường link http://localhost/kienthuc24h/public/name ta thấy kết Vậy ta muốn truyền đối số cho view Bạn có nhiều cách để làm điều Cách 1: Sử dụng đối số Route::get("name2",function(){ $data['name']= "Bui Van Tinh"; return View::make("hoten",$data); }); Với cách bạn truyền sang view hoten.php đối số có tên $name Do hoten.php bạn dùng sau: echo "Họ tên bạn là: $name"; Cách 2: Truyền qua phương thức tên with() Route::get("name3",function(){ return View::make('hoten')->with('name', 'Steve'); }); 16 Và view hoten.php ta hồn tồn sử dụng $name dễ dàng Nhưng với cách này, bạn khó để truyền nhiều giá trị cho view Cách 3: Sử dụng hàm compact() PHP Route::get("name4",function(){ $name = "Framgia"; return View::make("hoten",compact("name")); }); Và view abcd.php bạn việc sử dụng $id cách dễ dàng Trong trường hợp bạn muốn thao đặt view thực mục cho gọn gàng Bạn sử dụng phân cách, thay dấu / bạn dùng dấu “.” Route::get("name",function(){ return View::make("demo.hoten"); }); 2.7 Controller Laravel Framework - Như bạn biết Laravel cho phép xử lý liệu bên Route thao tác phức tạp dài lên xử lý Controller.Có ứng dụng bạn trở nên linh hoạt dễ mở rộng sau 2.7.1 Khai báo Controller Laravel Framework: – Để tạo controller bạn cần vào thư mục app/controller với quy tắc sau: Tên file trùng với tên Class Kế thừa từ lớp BaseController Ví dụ, tạo file HocphpController.php với nội dung: