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[.]
Trang 1BỘ 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
Trang 2MỤC LỤC
PHẦN 1 MỞ ĐẦU 3
1 Lý do chọn đề tài 3
2 Mục đích nghiên cứu (các kết quả cần đạt được) 3
3 Đối tượng và phạm vi nghiên cứu 3
4.Phương pháp nghiên cứu: 3
PHẦN 2 ĐỀ CƯƠNG CHI TIẾT 5
CHƯƠNG 1: ĐẶT VẤN ĐỀ 5
1.1 PHP Framework là gì? 5
1.2 Tại sao nên sử dụng PHP Framework? 5
1.3 Tại sao nên sử dụng Laravel Framework? 6
CHƯƠNG 2: 7
GIỚI THIỆU VỀ LARAVEL 7
2.1 Cấu trúc thư mục của Laravel 7
2.2 Cài đặt Laravel 8
2.2.1 Cài Composer 8
2.2.2 Cài Laravel 9
2.3 Cấu hình cơ bản cho ứng dụng 9
2.4 Chạy ứng dụng đầu tiên với Laravel 9
2.5 Route trong 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 trong Laravel Framework 15
2.7 Controller trong Laravel Framework 16
Trang 32.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 cơ sở dữ liệu 21
2.8.1 Cấu hình kết nối cơ sở dữ liệu trong Laravel Framework 21
2.8.2 Database Transactions 22
2.9 Sử dụng Query Builder 23
2.9.1 Truy vấn dữ liệu 24
2.9.2 Join bảng dữ liệu 26
2.9.3 Hàm trong Laravel Framework 27
2.9.4 Raw Expressions 27
2.9.5 Câu lệnh Inserts dữ liệu 27
2.9.6 Câu lệnh Updates dữ liệu 27
2.9.7 Câu lệnh Deletes dữ liệu 27
2.9.8 Câu lệnh Union 28
2.10 Eloquent ORM 28
2.10.1 Lấy dữ liệu 28
2.10.2 Thêm dữ liệu (Insert) 29
2.10.3 Cập nhật dữ liệu (Update) 29
2.10.4 Xóa dữ liệu (Delete) 29
2.11 Sử dụng Migrations và 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
1 Giới thiệu chương 35
2 Nội dung 35
CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 40
4 Kết luận: 40
4.1 Kết quả đạt được 40
4.2 Hướng phát triển 40
Trang 4mũ, balo, quân hàm, quân hiệu Qua quá trình xây dựng và phát triển đến nay, Công ty đã trở thành một trong những Công ty có uy tín trong và ngoài nước, với 5 xí nghiệp thành viên, tổng số lao động hiện nay hơn 2000 người Ngoài sản xuất các mặt hàng phục vụ cho Quân đội và Công an, Công ty còn sản xuất giày nam, nữ, giày vải, túi cặp các loại trên công nghệ hiện đại phục vụ trong nước và xuất khẩu Công ty đang mở rộng kinh doanh sang lĩnh vực thương mại điện tử vì thế cần có website để kinh doanh.
Hiện nay có thể xem công nghệ xây dựng web bằng Laravelframework rất phổ biến Laravel framework dùng mã nguồn mở miễn phí,
vì thế nên Laravel framework có thể được cài đặt trên hầu hết các WebServer thông dụng hiện nay như Apache, IIS… dễ học khi đã biết HTML,
C, OOP (vì php được phát triển trên nền tảng C, OOP ), có nhiềuwebsever cấu hình đơn giản như 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 Tuynhiên ngoài những ưu điểm bên cách đó Laravel framework còn có nhượcđiểm là chỉ chạy trên ứng dụng web, mã nguồn không đẹp và hiếm tool
2 Mục đích nghiên cứu (các kết quả cần đạt được).
Xây dựng website kinh doanh giầy dép
Giới thiệu và trưng bày được các mặt hàng Nhanh chóng hiệu quả
Đảm bảo chính xác, bảo mật cao, tiện lợi và dễ dàng sử dụng cho khách hàng
Thuận tiện cho việc bán và mua hàng
3 Đối tượng và phạm vi nghiên cứu.
Đối tượng nghiên cứu:
Laravel framework
Tìm hiểu và khảo sát qui trình bán hàng qua mạng để có
cơ sở xây dựng một trang web bán hàng
Phạm vi nghiên cứu: xây dựng một trang web bán lẻ, chuyên bán sảnphẩm sản phẩm giầy dép trong lãnh thổ việt nam
4.Phương pháp nghiên cứu:
Trang 5NHẬ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 và ghi rõ họ tên)
Trang 6PHẦN 2 ĐỀ CƯƠNG CHI TIẾT CHƯƠNG 1: ĐẶT VẤN
ĐỀ 1.1 PHP Framework là gì?
PHP là 1 ngôn ngữ script rất phổ biến hiện nay bởi những lý do: linh
hoạt, dễ sử dụng, dễ học, v…v nhưng đôi khi việc viết mã PHP, hay bất
cứ ngôn ngữ (lập trình) nào khác, có thể trở nên đơn điệu và lủng củng Đó
là lúc PHP Framework có thể giúp bạn
PHP Frameworks làm cho sự phát triển của những ứng dụng web viết bằng
ngôn ngữ PHP trở nên trôi chảy hơn, bằng cách cung cấp 1 cấu trúc cơ bản để
xây dựng những ứng dụng đó Hay nói cách khác, PHP Framework giúp đỡcác bạn thúc đẩy nhanh chóng quá trình phát triển ứng dụng, giúp bạn tiếtkiệm được thời gian, tăng sự ổn định cho ứng dụng, và giảm thiểu số lần phảiviết lại mã cho lập trình viên Ngoài ra Framework còn giúp những người mớibắt đầu có thể xây dựng các ứng dụng ổn định hơn nhờ việc tương tác chính
xác giữa các Database, mã (PHP) và giao diện (HTML) 1 cách riêng biệt Điều
này cho phép bạn dành nhiều thời gian để tạo ra các ứng dụng web, hơn là phíthời gian để viết các đoạn mã lặp lại trong 1 project
Ý tưởng chung đằng sau cách thức làm việc của 1 PHP Frameworkđược kể đến là Model View Controller (MVC) MVC là 1 mô hình (kiến trúc) tronglập trình, cho phép tách biệt các mã nghiệp vụ và giao diện thành các phần riêngbiệt, điều này đồng nghĩa với việc ta có thể chỉnh sửa chúng 1 cách riêng lẻ.Trong cụm từ MVC thì: Model (M) có thể hiểu là phần xử lý các thao tác về
nghiệp vụ (business logic), View được hiểu là phần xử lý lớp giao diện (presentation layer), và Controller làm nhiệm vụ lọc các request đc gọi từ user,
có chức năng như 1 route: điều chỉnh, phân luồng các yêu cầu để gọi đúngModel & View thích hợp Về cơ bản, MVC chia nhỏ quá trình xử lý của 1 ứngdụng, vì thế nên bạn có thể làm việc trên từng thành phần riêng lẻ, trong khinhững thành phần khác sẽ không bị ảnh hưởng tới Thực chất, điều này giúp đỡbạn lập trình PHP nhanh hơn và ít phức tạp hơn
1.2 Tại sao nên sử dụng PHP Framework?
Có rất nhiều lý do khác nhau để các lập trình viên sử dụng PHP Framework,nhưng 1 trong những lý do chính vẫn là khả năng giúp các lập trình viền tăng tốcquá trình phát triển ứng dụng Việc sử dụng lại các mã lệnh giống nhau trongnhiều project sẽ giúp các bạn tiết kiệm được thời gian và công sức 1 cách đáng
kể Một Framework sẽ cung cấp sẵn các module nền tảng cần thiết để xây dựng 1project, vì thế, các lập trình viên có thể tận dụng được thời gian để phát triển cácứng dụng thực tế, hơn là mất thời gian để xây dựng lại nền tảng trên mỗi project
Trang 71.3 Tại sao nên sử dụng Laravel Framework?
Có hơn 20 Framework mã nguồn mở PHP khác nhau, nhưng trong số
đó thì Laravel Framework là phổ biến nhất, xếp sau là: PhaIcon, Symfony2,CodeIgniter, Yii,…
Nó là 1 Framework khá mới mẻ nhưng bù lại nó có "hướng dẫn sử dụng" khá đầy
đủ, rõ ràng và dễ hiểu và cùng với cộng đồng phát triển rộng lớn trên toàn thế giới Nếu bạn đã từng làm việc với các Framework khác hoặc chỉ là người mới bắt đầu
"chập chửng" tìm hiểu PHP Framework thì việc tiếp cận Laravel Framework không phải là vấn đề khó khăn gì Ưu điểm của nó là: Autoload theo namespace, Các lệnh tương tác với cơ sở dữ liệu cực kỳ ngắn gọn và thân thiện, phân trang trong laravel cực kỳ đơn giản, việc quản lý layout giờ đây thật sự giản đơn với Laravel, dễ dàng tích hợp các thư viện của Zend và các gói bundle (giống như moduel) vào project, có rất nhiều gói bundle đc các đồng đạo trên thế giới build sẵn và share trên github và còn rất nhiều ưu điểm khác đang đợi các bạn khám phá…
Trang 8CHƯƠNG 2:
GIỚI THIỆU VỀ LARAVEL
2.1 Cấu trúc thư mục của Laravel
Một dự án web viết bằng Laravel có cấu trúc thư mục như sau:
Hình 2.1: Thư mục Laravel Framework
Hình 2.2: Chức năng của các thư mục chínhNhư đã đề cập ở trên, thư mục /app là nguồn chính của ứng dụng, vì vậy chúng ta cần tìm hiểu sâu về chúng:
Trang 9Hình 2.3: Chức năng cụ thể của các thư mục con trong app
2.2 Cài đặt Laravel
2.2.1 Cài Composer
Chúng ta sẽ cài đặt Laravel bằng composer nên các bạn cần cài đặtcomposer trước, tôi dùng window nên tôi download bản cài đặt composer củawindow Bạn có thể tải composer tại địa chỉ: http://laravel.com/docs/4.2/installation
Các bạn download về và cài đặt bình thường, lưu ý ở chỗ chọn phpthôi, các bạn chỉ đường dẫn đến file php.exe trong thư mục php củaXAMPP (xampp/php/php.exe)
Trang 102.2.2 Cài Laravel
Bản Laravel mới nhất hiện tại là 4.2 (Tại thời điểm bài viết này), bảnnày yêu cầu chạy trên PHP>=5.4, hiện tại tôi đang dùng XAMPP 5.6.3 nêncài được bản mới nhất của Laravel Nếu các bạn muốn cài đặt bản mớinhất thì chỉ 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 nếu install các bản thấp hơn thì dùng:
composer create-project laravel/laravel tên-thư-mục-laravel-của-bạn 4.0.*
Sau khi cài đặt xong, chúng ta có cấu trúc thư mục Laravel như hình 2.1 phía trên Để biết được có cài Laravel thành công hay không thì chúng ta thử chạy Laravel bằng cách mở trình duyệt lên rồi gõ địa chỉ như sau: http://localhost/laravel_demo/public/ Nếu thành công thì sẽ hiển thị hình dưới đây:
Hình 2.4: Cài đặt Laravel thành công
2.3 Cấu hình cơ bản cho ứng dụng
Các bạn truy cập vào app/config/app.php và chỉnh sửa lại những thôngtin cơ bản sau:
+ Chỉnh lại URL,các bạn tìm tới key url và chỉnh lại cho phù hợp với dự
án của mình 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 của lệnh này
là tăng tính bảo mật của những cookie và session cho website Hoặc các bạn có thể
sử dụng lệnh CMD bằng cách chỉ đường dẫn đến thư mục làm việc của bạn ở đâymình sử dụng thư mục kienthuc24h và chạy dòng lệnh sau:
php artisan key:generate
2.4 Chạy ứng dụng đầu tiên với Laravel
- Các bạn truy cập vào file app/route.php và thêm nội dung sao vào cuối
file: Route::get(‘/dang-nhap’,function(){
echo ‘Đây là trang đăng nhập’;
});
Trang 11- Và các bạn thử gõ lên trình duyệt đường link:http://localhost/kienthuc24h/public/dang-nhap các bạn sẽ thấy được kết quảvới nội dung sau:
Đây là trang đăng nhập
2.5 Route trong Laravel Framework
Mục đích của router là định tuyến đến những controller cụ thể nào từ phíarequest của người sử dụng Đối với những Framework khác thì khi các bạnmuốn thực hiện 1 công việc nào đó thường chúng ta cần xây dựng 1 controller
để xử lý phải không nào, nhưng trong Laravel thì các bạn hoàn toàn có thể xử
lý dữ liệu ngay trong phần Router Đây chính là điểm mạnh cũng như điểmkhác biệt lớn của Laravel Framework đối với các Framework khác
+ URI là dạng link trên url
+ Function callback: Hàm sẽ gọi tới link URI phía trên được chạy, đâychính là nơi các bạn có thể xử lý dữ liệu
+ Method chính là các dạng phương thức cơ bản: post, get, put, delete, any.
- POST Route: Các thao tác lấy từ form như thêm dữ liệu
- GET Route: Dành cho các thao tác truy cập thông thường tương đương với request cơ bản trong PHP Ví dụ chạy 1 link trên url
- PUT Route: Dành cho thao tác lấy từ form nhưng là cập nhật dữ liệu
- DELETE Route: Dành cho thao tác hành động xóa dữ liệu
- ANY Route: là sự tổng hợp các thao tác ở trên
Trong đó thì 2 dạng POST và GET sẽ được sử dụng nhiều nhất
- Ngoài ra các bạn còn có thể tùy chỉnh rất nhiều trong phần Route này theo cú pháp:
Trang 12hướng sẽ gọi tới controller là ProducController và phương thức (action) là list.
localhost/kienthuc24h/san-Bạn đang xem sản phẩm nokia520 có ID = 1
- Ngoài ra các bạn hoàn toàn có thể kiểm tra dữ liệu của tham số truyền vào bằng 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 đang xem sản phẩm’.$name.’có ID = ’.&id; })->where(array(‘name’=>’[a-z]+’,’id’=>’[0-9]+’));
Ở trường hợp trên ta xét với điều kiện kiểm tra sẽ là sản phẩm(name)
sẽ là các ký tự thường từ a-z còn id sẽ là các số tự nhiên từ 0-9
2.5.3 Route Filters
- Đây chính là phần bộ lọc định tuyến, nó cho phép chúng ta có thể kiểmtra trước khi cập nhật vào đường dẫn đó (URI) Ứng dụng trong thực tế là kiểm tratrạng thái đăng nhập trước khi cho phép truy cập vào 1 trang nào đó
- Filter chia ra 2 loại là before và after
+ Before: Nghĩa là request trước khi tới routing
+ After: Nghĩa là request sau khi tới routing
Trên thực tế thì Before thường được sử dụng nhiều hơn
- Cú pháp cơ bản:
Route::filter(“tên filter”, function(){
// code xử lý
Trang 13Route:: filter(“checklogin”, function(){
if(session::get(‘login’)!=1){
return Redirect::to(“/dang-nhap”);
} });
Đoạn code trên mình xây dựng 1Filter có tên là checklogin đang thực hiệnkiểm tra xem biến session login có bằng 1, ý định của mình ở đây là kiểm tra xem
đã đăng nhập chưa Nếu chưa đăng nhập thì lập tức chuyển về 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 trên mình đã thêm vào khóa before chỉ tới checklogin.Chính là filter ta đã thiết lập trước đó, và đẩy nó sang controllerProductController với action là store dựa vào khóa uses
- Như vậy, khi các bạn truy cập vào link them-san-pham thì lúc này
nó sẽ kiểm tra Filter checklogin trước
- Với bất kỳ link nào đó mà bạn muốn kiểm tra đăng nhập thì chỉ cần
sử dụng “before”=>”checklogin” là được
- Filter trong Laravel Framework còn cho phép chúng ta 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 dữ liệu
} });
Route::get(‘/check-id’,array(“before”=>”checkId:-1”,”uses”=>”
DemoController@checkid“));
13
Trang 14+ Như vậy khi các bạn chạy link check-id lúc này sẽ gọi tới Filter checkId
để kiểm tra, và giá trị mình gửi sang bên Filter đó chính là -1(checkId:-1)
- Qua những ví dụ này các bạn thấy được ý nghĩa và sức mạnh củafilter trong thực tế phải không nào Với filter ta có thể tối giản code ở mức caonhất và tái sử dụng vô cùng đơn giản
echo “<a href=’$url’>Chi tiết sản phẩm</a>”;
+ as: Là tên của route (product)
+ uses: Route này sẽ sử dụng controller (ProductController) nào và action (view) nào
+ 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 khi chạy đoạn code trên chúng ta sẽ có $url=/san-pham/nokia520/1
- Tiếp đến ta xây dựng 1 controller với nội dung sau:
và kết quả sẽ hiển thị ra như sau:
Bạn đang xem sản phẩm nokia520 có ID = 1
Trang 152.5.5 Route Groups
- Route Groups sẽ giúp chúng ta có thể nhóm các Route mà cần thôngqua bộ lọc định tuyến nào đó (Filter) Như với ví dụ trên chúng ta có Filter làchecklogin, giả sử chúng ta có rất nhiều trang cần sử dụng bộ lọc kiểm tra đăngnhập này, không lẻ chúng ta phải viết tất cả các khóa before Nhưng khi sử dụngRoute Groups các bạn chỉ cần viết 1 lần khóa before cho nhóm đó
Ví dụ:
Route::group(array(“before”=>”checklogin”), function() { Route::get(‘/them-san-
pham’,array(“uses”=>”ProductControl
ler@store”));
Route::get(‘/cap-nhat-san-pham’,array(“uses”=>”Product Controller@update”));
Route::get(‘/them-danh-muc’,array(“uses”=>”CatalogControl ler@store”));