SlideShare a Scribd company logo
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
Doanlaravel - đồ án chuyên ngành laravel
Công Nghệ Thông Tin (Trường Cao đẳng Công nghệ Tây Nguyên)
Scan to open on Studocu
Studocu is not sponsored or endorsed by any college or university
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
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 ĐỒ ÁN CHUYÊN NGÀNH
XÂY DỰNG WEBSITE BÁN MĨ PHẨM
BẰNG LARAVEL
Sinh viên: Phan Thị Thanh Quy
MSSV: 2120110347
Lớp: CCQ2011D
GVHD: Chu Thị Mai
TP.HCM, 15/12/2022
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
LỜI MỞ ĐẦU
PHẦN 1. MỞ ĐẦU
1. Lý do chọn đề tài
Laravel là một web application framework của PHP. Được đánh giá là một trong
những Framework có cú pháp đẹp, ngắn gọn và dễ nhớ nhất trong các PHP
Framework.
Laravel cung cấp cho bạn một kiến trúc tốt để bạn có thể bắt đầu project của mình mà
không cần phải thay đổi, chỉnh sửa thêm.
Trải qua nhiều version khác nha, Laravel ngày càng chứng minh được những nỗ lực
của mình trong việc cố gắng đem lại cho lập trình viên những trải nghiệm tốt nhất.
Bằng chứng là Laravel đưa vào những tính năng tuyệt vời phục vụ cho quá trình phát
triển web như: Database Abstract Layer, Queues, Scheduled jobs, Unit and integration
testing và nhiều hơn thế nữa...
Khi mức độ phổ biến của sự phát triển của Laravel đang tăng lên với tốc độ ấn
tượng, nhu cầu về các tính năng tương tự cũng tăng lên. Để đáp ứng nhu cầu mua
hàng ngày càng tăng này, một số ứng dụng đã sẵn sàng hiện có sẵn trên thị trường có
thể được sử dụng để thêm một loạt các tính năng vào trang web của Laravel. Với các
ứng dụng đã sẵn sàng, chi phí phát triển tổng thể giảm xuống rất nhiều. Có một số
tính năng thú vị khác của Laravel framework khiến nó trở thành một trong những nền
tảng được ưa chuộng nhất để phát triển web.
2. Mục đích nghiên cứu (các kết quả cần đạt được).
• Xây dựng website bán mĩ phẩm.
• Giới thiệu và trưng bày được các mặt hàng
• Nhanh chóng hiệu quả
• 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 mĩ phẩm .
Phạm vi nghiên cứu:
Xây dựng một trang web bán lẻ, chuyên bán sản phẩm các mặt hàng mĩ
phẩm trong nước và các mặt hàng nội địa.
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 và tổng hợp tài liệu để xây dựng một website.
❖ Quá trình tin học để xây dựng website thương mại điện tử.
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
NHẬN XẾT CỦA GIÁO VIÊN
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
Tp.HCM, ngày…,tháng…năm 2022
Giáo viên hướng dẫn
(Kí tên)
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
Mục Lục
LỜI MỞ ĐẦU ...............................................................................................................2
PHẦN 1. MỞ ĐẦU.......................................................................................................2
1. Lý do chọn đề tài..................................................................................................2
2. Mục đích nghiên cứu (các kết quả cần đạt được) ................................................2
3. Đối tượng và phạm vi nghiên cứu........................................................................2
4. Phương pháp nghiên cứu: ....................................................................................2
PHẦN 2. LÝ THUYẾT.................................................................................................6
CHƯƠNG 1: TỔNG QUAN.........................................................................................6
1. PHP Framework là gì? .........................................................................................6
2. Tại sao nên sử dụng PHP Framework?................................................................6
3. Tại sao nên sử dụng Laravel Framework?.............................................................6
CHƯƠNG 2: GIỚI THIỆU LARAVEL ......................................................................7
1. Cấu trúc thư mục của Laravel..............................................................................7
2. Cài đặt Laravel.....................................................................................................8
2.1 Chạy ứng dụng đầu tiên với Laravel ................................................................9
2.2 Route trong Laravel Framework.......................................................................9
2.3 Basic Routing....................................................................................................9
2.4 Route Parameters............................................................................................10
2.5 Route Filters ...................................................................................................11
2.6 Name Route ....................................................................................................12
2.7 Route Groups..................................................................................................13
2.8 Route Prefixing...............................................................................................13
3. View trong Laravel Framework .........................................................................14
4. Controller trong Laravel Framework ...................................................................15
4.1 Khai báo Controller trong Laravel Framework: .............................................15
4.2 Chạy Controller theo phương thức Route::get................................................16
4.3 Implicit Controllers – Sử dụng phương thức Route::controller......................16
4.4 RESTfulResourceControllers–Sửdụng phương thức Route::resource............17
4.5 Controller với Filter........................................................................................19
4.6 Kết nối cơ sở dữ liệu.......................................................................................20
5. Cấu hình kết nối cơ sở dữ liệu trong Laravel Framework .................................20
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
5.1 Database Transactions ....................................................................................22
5.2 Sử dụng Query Builder...................................................................................23
CHƯƠNG 3 : PHÂN TÍCH THIẾT KẾ HỆ THỐNG ................................................24
1. Phân tích yêu cầu ...............................................................................................24
1.1. Xác Định Tác Nhân .....................................................................................24
1.2. Xác Định Tính Năng....................................................................................24
1.3. Phân Tích Tính Năng...................................................................................24
1.4. Sơ Đồ Use Case...........................................................................................27
2. Phân thích và thiết kế cơ sở dữ liệu ...................................................................29
2.1 Bảng Dữ Liệu ..............................................................................................29
2.2 Mối Quan Hệ Giữa Các Bảng......................................................................31
CHƯƠNG 3: GIAO DIỆN WEBSITE ...................................................................32
1. Trang Người Dùng..............................................................................................32
1.1 Giao diện.........................................................................................................32
1.2 Đăng ký/ Đăng nhập.......................................................................................32
1.3 Giỏ hàng..........................................................................................................34
1.4 Mua hàng ........................................................................................................34
2. Trang Quản Trị.....................................................................................................35
2.1 Đăng nhập.......................................................................................................36
2.2 Thêm sản phẩm...............................................................................................36
CHƯƠNG 4: KẾT LUẬN...........................................................................................38
1. Kết luận..............................................................................................................38
2. Hướng phát triển ................................................................................................38
CHƯƠNG 5 : DANH MỤC CÁC TÀI LIỆU THAM KHẢO....................................39
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
PHẦN 2. LÝ THUYẾT
CHƯƠNG 1: TỔNG QUAN
1. PHP Framework là gì?
PHP là ngôn ngữ kịch bản phổ biến nhất của thế giới vì nhiều lý do khác nhau -
tính linh hoạt, dễ dàng sử dụng, trong số những người khác - nhưng thường mã hóa
trong PHP, hoặc vấn đề về ngôn ngữ, có thể nhận được khá đơn điệu và lặp đi lặp lại.
Đó là một framework PHP có thể được trợ giúp.
Dòng phát triển của PHP framework trên các ứng dụng web viết trên nền tảng
PHP.Được cung cấp một cấu trúc cơ bản để xây dựng các ứng dụng web.
Nói cách khác, PHP framework giúp đỡ thúc đẩy phát triển các ứng dụng nhanh
chóng (RAD), giúp bạn tiết kiệm thời gian, giúp xây dựng các ứng dụng ổn định hơn,
và làm giảm số lượng mã hóa lặp đi lặp lại cho developer. Framework có thể giúp
người mới bắt đầu để xây dựng các ứng dụng ổn định hơn bằng cách đảm bảo tương
tác cơ sở dữ liệu phù hợp và mã (PHP) và giao diện (HTML) một 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 thực tế, thay vì
dành thời gian viết các đoạn mã lặp đi lặp lại trong một project.
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ốc
quá trình phát triển ứng dụng. Việc sử dụng lại các mã lệnh giống nhau trong nhiề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 1 project, 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 projec
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á… .
6
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
7
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
CHƯƠNG 2: GIỚI THIỆU LARAVEL
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ư :
Folder / File Mô tả
app
Thư mục app, chứa tất cả các project được tạo, hầu hết các class trong
project được tạo đều ở trong đây.
Không giống các framwork khác, các file model không được chứa trong
một thư mục riêng biệt, mà được chứa ngay tại thư mục app này.
app/Console Thư mục Console, chứa các tập tin định nghĩa các câu lệnh trên artisan.
app/Exceptions Thư mục Exceptions, chứa các tập tin quản lý, điều hướng lỗi.
app/Http/Controllers Thư mục Controllers, chứa các controller của project.
app/Http/Middleware Thư mục Middleware, chứa các tập tin lọc và ngăn chặn các requests.
app/Providers
Thư mục Providers, chứa các file thực hiện việc khai báo service và bind
vào trong Service Container.
bootstrap
Thư mục bootstrap, chứa những file khởi động của framework và những
file cấu hình auto loading, route, và file cache.
config Thư mục config, chứa tất cả những file cấu hình.
database
Thư mục database, chứa 2 thư mục migration (tạo và thao tác database) và
seeds (tạo dữ liệu mẫu), tiện lợi để lưu trữ dữ liệu sau này.
database/factories
Thư mục factories, chứa các file định nghĩa các cột bảng dữ liệu để tạo ra
các dữ liệu mẫu.
database/migrations Thư mục migrations, chứa các file tạo và chỉnh sửa dữ liệu.
database/seeds Thư mục seeds, chứa các file tạo dữ liệu thêm vào CSDL.
public
Thư mục public, chứa file index.php giống như cổng cho tất cả các
request vào project, bên trong thư mục còn chứa file JavaScript, và CSS.
resources
Thư mục resources, chứa những file view và raw, các file biên soạn như
LESS, SASS, hoặc JavaScript. Ngoài ra còn chứa tất cả các file lang trong
project.
resources/views Thư mục views, chứa các file view xuất giao diện người dùng.
routes
Thư mục routes, chứa tất cả các điều khiển route (đường dẫn) trong
project. Chứa các file route sẵn có: web.php, channels.php, api.php, và
console.php.
routes/api.php
file api.php, điều khiển các route của ứng dụng, như route của ứng dụng
User (đăng ký, đăng nhập, ...).
routes/web.php
file web.php, điều khiển các route của view, như route của trang top, sản
phẩm, ...
storage
Thư mục storage, chứa các file biên soạn blade templates của bạn, file
based sessions, file caches, và những file sinh ra từ project.
• Thư mục app, dùng để chứa những file sinh ra từ project.
• Thư mục framework, chứa những file sinh ra từ framework và
caches.
• Thư mục logs, chứa những file logs.
8
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
composer create-project --prefer-dist laravel/laravel: ^8 laravel8
composer global require laravel/installer
• Thư mục /storage/app/public, lưu những file người dùng tạo ra
như hình ảnh.
tests Thư mục tests, chứa những file tests, như PHPUnit test.
vendor Thư mục vendor, chứa các thư viện của Composer.
.env file .env, chứa các config chính của Laravel.
artisan file thực hiện lệnh của Laravel.
.gitattributes
.gitignore
File dành cho xử lý git.
composer.json
composer.lock
composer-setup.php
File của Composer.
package.js file package.js, chứa các package cần dùng cho projects.
phpunit.xml file phpunit.xml, xml của phpunit dùng để testing project.
webpack.mix.js file webpack.mix.js, file dùng để build các webpack.
2. Cài đặt Laravel
Chúng ta cài Laravel với composer và cũng có 2 cách để cài đặt laravel
• Composer create-project
• Composer laravel installer.
Lưu ý về phiên bản PHP Laravel 8 yêu cầu PHP >= 7.3 vì vậy các bạn cần nâng cấp
PHP của mình trước khi cài
Cài qua composer create-project.
Đối với cách này các bạn chỉ cần sử dụng câu lệnh sau:
VD: Chúng ta cài laravel vào thư mục laravel8. Tại htdocs shift + chuột phải --> open
PowerShell windows here hoặc mở cmder lên gõ vào lệnh sau
Lưu ý: nếu ban muốn cài đặt phiên bản laravel 8 mới nhất thì các bạn sử dụng lệnh sau:
composer create-project --prefer-dist laravel/laravel:8. * laravel8
Cài qua laravel installer.
Trước hết phải cài laravel/installer package bằng lệnh sau
Sau khi đã cài đặt thành công laravel/installer các bạn cần chắc chắn $PATH trên máy
của các bạn đã thêm composer bin.
Cài đặt laravel bằng câu lệnh sau:
9
composer create-project --prefer-dist laravel/laravel: ten_project
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
php artisan serve
Trong đó folder_name là tên folder chứa code laravel của bạn.
Chạy Laravel.
Để chạy laravel các bạn cần trỏ đến thư mục vừa cài đặt laravel và chạy câu lệnh. Ví dụ
mình truy cập vào thư mục laravel8 bật cmder và gõ lệnh
Chạy thành công truy cập vào link
http://localhost:8000/
Chúng ta thấy trang welcome của laravel 8 là thành công.
2.1 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’;
});
- 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.2 Route trong Laravel Framework
Mục đích của router là định tuyến đến những controller cụ thể nào từ phía
request của người sử dụng. Đối với những Framework khác thì khi các bạn muố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ểm khác biệt lớn của
Laravel Framework đối với các Framework khác.
2.3 Basic Routing
- Các định tuyến trong Laravel đều được viết trong app/route.php. Cú pháp
đơn giản nhất của 1 định tuyến đó là:
Route::method(‘URI’,’Function call back’)
Trong đó thì:
+ 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, đây chí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.
10
laravel new folder_name
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
- 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.
Ví dụ:
Các bạn mở file app/route.php và 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 đó thì kienthuc24h chính là thư mục dự án). Khi các bạn chạy link
này lập tức trong Route sẽ kiểm tra và gọi đúng tới hàm callback. Sau khi chạy
trang này các bạn sẽ nhận được thông báo như ý muốn.
- 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:
Ví dụ: Route::method(‘Tên định danh’,’Tham số’);
Route::get(“san-pham”,”ProductController@list”);
Với ví dụ trên có nghĩa là khi chúng ta chạy link san-pham lúc này bộ điều
hướng sẽ gọi tới controller là ProducController và phương thức (action) là list.
2.4 Route Parameters
- Trong trường hợp các bạn muốn gửi kèm theo tham số cho bộ định tuyến
thì chỉ cần khai báo theo dạng{Tên tham số} và trong hàm callback chúng ta coi nó
như tham số trong hàm bình thường.
Ví dụ:
Route::get(‘/san-pham/{name}/{id}’, function($name,$id)
{ echo ‘Bạn đang xem sản phẩm’.$name.’có ID =
’.&id;
});
Tiếp theo bạn truy cập vào đường link localhost/kienthuc24h/san-
pham/nokia520/1 và kết quả sẽ là:
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){
11
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
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 Route Filters
- Đây chính là phần bộ lọc định tuyến, nó cho phép chúng ta có thể kiểm tra
trước khi cập nhật vào đường dẫn đó (URI). Ứng dụng trong thực tế là kiểm tra
trạ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ý
Ví dụ:
});
Route:: 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ện
kiể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 controller ProductController 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.
12
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
- 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
});
+ Như các bạn thấy tham số thứ 3 $value chính là giá trị mà chúng ta sẽ
truyền vào, ví dụ:
Route::filter(“checkId”, function($route, $request,$value){
// Xử lý dữ liệu
if($value<=0)
{
echo ‘Id khong hop le’;
}
});
Route::get(‘/check-id’,array(“before”=>”checkId:-1”,”uses”=>”
DemoController@checkid“));
+ 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ủa filter
trong thực tế phải không nào. Với filter ta có thể tối giản code ở mức cao nhất và tái
sử dụng vô cùng đơn giản.
2.6 Name Route
- Đặt tên cho các Route nhằm sử dụng linh hoạt cho ứng dụng. Dễ dàng lấy
được thông tin của Route thông qua tên này.
Ví dụ:
Route::get(‘/san-pham/{name}/{id}’, array(‘as’=>’product’,’uses’=>Produ
ctController@view));
$url= URL::route(“product”,array(‘nokia520’,’1’));
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.
13
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
+ 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:
<?php
class ProductController extends BaseController{
public function view($name,$id)
{
echo ‘Bạn đang xem sản phẩm’.$name.’có ID = ’.$id;
}
}
và kết quả sẽ hiển thị ra như sau:
Bạn đang xem sản phẩm nokia520 có ID = 1
2.7 Route Groups
- Route Groups sẽ giúp chúng ta có thể nhóm các Route mà cần thông qua 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 đăng nhậ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ụng Route 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”));
Route::get(‘/cap-nhat-danh-muc’,array(“uses”=>”CatalogControl
ler@update”));
});
+ Như vậy là khi các bạn truy cập vào các link ở trên thì sẽ được thông qua
Filter checklogin kiểm trước.
14
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
2.8 Route Prefixing
- Gồm 1 số các định tuyến mà đằng trước nó có tiền tố.
Ví dụ:
localhost/kienthuc24h/admin/them-san-pham
localhost/kienthuc24h/admin/cap-nhat-san-pham
localhost/kienthuc24h/admin/them-danh-muc
localhost/kienthuc24h/admin/cap-nhat-danh-muc
- Với các đường link trên thì các bạn thấy trước nó đều có tiền tố (Prefix) là
admin phải không nào. Lúc này chúng ta hoàn toàn có thể cho nó vào 1 nhóm có
tiền tố admin và thực hiện kiểm tra.
Ví dụ:
Route::group(array(“prefix”=>”admin”,”before”=>”checklogin”), function(){
// phần sử lý nằm ở đây.
});
Với ví dụ trên thì mình đang nhóm tất cả các link có tiền tố là admin, và
trước khi truy cập vào những link này mình sẽ thực hiện gọi tới Filter checklogin để
kiểm tra xem đã đăng nhập chưa.
3. View trong Laravel Framework
- Như đã đề cập ở trên thì thư mục view dùng để chứa các file mẫu như html để
tương tác với người sử dụng nằm trong thư mục (app/view).
- Để sử dụng view ta có thể sử dụng như sau:
return View::make("Tên",Đối số nếu có);
Ví dụ trong app/route.php ta có đường dẫn sau:
Route::get("name",function(){
return View::make("hoten"); // gọi file view có tên là: app/views/hoten.php
});
<!-- View stored in app/views/hoten.php -->
<html>
<body>
<h1>Hello, <?php echo $name; ?></h1>
</body>
</html>
Sau đó ta tạo file app/views/hoten.php với nội dung là ” Tên tôi là Tính” . khi
chạy thử đường link http://localhost/kienthuc24h/public/name thì ta sẽ thấy kết quả.
Vậy nếu ta muốn truyền đối số cho view thì sao. Bạn có nhiều cách để làm điều
đó.
15
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
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 này bạn đang truyền sang view hoten.php một đối số có tên là $name.
Do vậy tại hoten.php bạn có thể dùng nó như sau:
echo "Họ tên của bạn là: $name";
Cách 2: Truyền qua 1 phương thức tên with().
Route::get("name3",function(){
return View::make('hoten')->with('name', 'Steve');
});
Và ở view hoten.php ta hoàn toàn có thể sử dụng $name dễ dàng. Nhưng với
cách này, bạn sẽ rất khó để truyền nhiều giá trị cho view.
Cách 3: Sử dụng hàm compact() trong PHP.
Route::get("name4",function(){
$name = "Framgia";
return View::make("hoten",compact("name"));
});
Và ở view abcd.php bạn chỉ việc sử dụng $id một cách dễ dàng.
Trong trường hợp bạn muốn thao đặt view trong thực mục cho gọn gàng. Bạn có
thể sử dụng phân cách, thay vì là dấu / thì bạn sẽ dùng dấu “.”.
Route::get("name",function(){
return View::make("demo.hoten");
});
4. Controller trong Laravel Framework
- Như các bạn được biết trong Laravel cho phép chúng ta có thể xử lý dữ liệu
ngay bên trong Route nhưng đối với những thao tác phức tạp và dài chúng ta lên xử
lý trong Controller.Có như vậy thì ứng dụng của bạn mới trở nên linh hoạt và dễ mở
rộng sau này.
4.1 Khai báo Controller trong Laravel Framework:
– Để tạo 1 controller các bạn cần vào thư mục app/controller với các quy tắc
sau:
1. Tên file trùng với tên Class.
16
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
2. Kế thừa từ lớp BaseController.
Ví dụ, tạo 1 file HocphpController.php với nội dung:
<?php
class HocphpController extends BaseController
{ public function test(){
echo 'Tim hieu ve Controller trong Laravel tai kienthuc24h';
}
}
4.2 Chạy Controller theo phương thức Route::get
- Trước tiên các bạn truy cập vào file routes.php thêm nội dung sau:
Route::get('/controller-test', 'HocphpController@test');
Với đoạn code cấu hình trên ta đã khai báo 1 link controller-test sẽ gọi tới
controller HocphpController và phương thức(action) là test.Như vậy khi các chạy
link localhost/kienthuc24h/public/controller-test sẽ hiển thị nội dung như ý muốn:
Tim hieu ve Controller trong Laravel tai kienthuc24
Chúng ta sẽ đi thêm vào 1 ví dụ nữa về việc truyền tham số vào controller
thế nào nhé.Trong HocphpController tạo phương thức sau:
<?php
class HocphpController extends BaseController
{ public function view($title, $id)
{
echo 'Bạn đang xem bài viết '.$title.' có ID là :'.$id;
}
}
Và file routes.php ta cấu hình như sau:
Route::get('/bai-viet-{title}/{id}', 'HocphpController@view');
Và khi các bạn chạy link localhost/laravel/public/bai-viet-hocphp/1 sẽ nhận
được kết quả:
Bạn đang xem bài viết hocphp có ID là :1
Như vậy các bạn thấy chúng ta đã gửi thành công 2 biến đó chính là $title =
hocphp và $id = 1.
4.3 Implicit Controllers – Sử dụng phương thức Route::controller
Như các bạn thấy trong 1 controller chúng ta thường có khá nhiều các
phương thức(action) phải không nào,như vậy chả lẽ mỗi lần muốn chạy 1 action
nào đó lại phải vào file routes.php để thêm cấu hình sao?như vậy cũng thật bất tiện
và khó quản lý phải không nào.Trong Larvel còn cho phép chúng ta có thể chạy các
phương thức trong controller 1 cách tự động dựa vào tên action đó.
+ Trước tiên các bạn vào file routes.php thêm đoạn code cấu hình như sau:
Route::controller('hocphp', 'HocphpController');
Với phương thức Route::controller cho phép chúng ta sử dụng 2 đối số, đối
số thứ nhất chính là định dạnh URI,đối số thứ 2 chính là tên lớp controller.Trong ví
17
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
Hình 2.5: Ánh xạ giữa route và action
Và dưới đây là 1 ví dụ đơn giản trong controller HocphpController:
dụ trên mình đã định nghĩa 1 URI có tên hocphp đại diện cho lớp controller
HocphpController.
+ Tiếp theo chúng ta cần chỉnh sửa nội dung file controller như sau:
<?php
class HocphpController extends BaseController
{ public function getTest(){
echo 'Tim hieu ve Controller trong Laravel tai kienthuc24h';
}
}
Như các bạn thấy nếu chúng ta cấu hình theo phương thức Route::controller
trong routes thì trong controller chúng ta cũng phải viết đúng theo các quy tắc trong
Laravel như sau:
+ Trước các action phải có các tiền tố là các giá trị get, post, any…các giá trị
này các bạn có thể xem lại về Route phía trên và tên action phải viết hoa chữ cái
đầu.
+ Tên phương thức phân biệt chữ hoa và chứ thường.
+ Khi muốn chạy action thì chạy theo dạng link URI/tên action viết thường.
Và lúc này chúng ta muốn chạy action test thì sẽ chạy đường link sau:
locaho st/kienthuc24h/public/hocphp/test, thì sẽ được kết quả như mong đợi.
4.4 RESTfulResourceControllers–Sửdụng phương thức Route::resource
- Để lập một controller qua câu lệnh command line, thì ta thực hiện:
php artisan controller:make HocphpController
- Bây giờ bạn có thể xử lý một resourceful route tới controller:
Route::resource('hocphp', 'HocphpController');
Việc lập route đơn này sẽ xử lý nhiều route của RESTful actions trên nguồn
hocphp.
Dưới đây là bảng ánh xạ giữa route và action:
<?php
class HocphpController extends BaseController {
/**
* Hocphp Repository
18
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
*
* @var Hocphp
*/
protected $Hocphp;
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
}
* Show the form for creating a new resource.
*
* @return Response
*/
public function create()
{
}
/**
* Store a newly created resource in storage.
*
* @return Response
*/
public function store()
{
}
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show($id)
{
}
/**
19
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
* Show the form for editing the specified resource.
*
* @param int $id
* @return Response
*/
public function edit($id)
{
}
/**
* Update the specified resource in storage.
*
* @param int $id
* @return Response
*/
public function update($id)
{
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return Response
*/
public function destroy($id)
{
}
}
- Như vậy những việc quản lý dữ liệu(hiển thị ,thêm, sửa, xóa) các bạn có thể
viết tại controller này.
Ngoài ra thì bạn có thể giới hạn được những action nào được thực thi:
Route::resource('hocphp', 'HocphpController',
array('only' => array('index',
'show'))); Route::resource('hocphp',
'HocphpController',
array('except' => array('create', 'store', 'update', 'destroy')));
4.5 Controller với Filter
- Trong phần Route phía trên mình đã giới thiệu về filters trong Laravel.Đây
chính là phần bộ lọc định tuyến,nó cho phép chúng ta có thể kiểm tra trước khi truy
cập vào đường dẫn đó.Như vậy các bạn hoàn toàn có thể sử dụng filters để lọc dữ
liệu với Controller.Bạn có thể khai báo trên file route như sau:
20
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
Route::get('add', array('before' => 'auth',
'uses' => 'HocphpController@store'));
- Ngoài ra các bạn còn có thể sử dụng filters ngay tại trong Controller,ví dụ:
<?php
class HocphpController extends BaseController
{ public function construct()
{
$this->beforeFilter('auth', array('except' => 'getLogin'));
$this->beforeFilter('csrf', array('on' => 'post'));
}
}
- Bạn cũng có thể chỉnh định cho filter bằng cách sử dụng Closure:
<?php
class HocphpController extends BaseController {
/**
* Instantiate a new UserController instance.
*/
public function construct()
{
$this->beforeFilter(function()
{
//code here
});
}
}
- Nếu bạn muốn sử dụng một phương thức khác làm filter thì ban có thể
thêm @ để định nghĩa filter:
<?php
class HocphpController extends BaseController
{ public function construct()
{
$this->beforeFilter('@filterRequests');;
}
public function filterRequests($route, $request){
//code here
}
}
}
=> Như vậy các bạn thấy việc sử dụng Filter cho Controller có rất nhiều cách
phải không nào.
4.6 Kết nố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, tất nhiên là chúng cũng có loại cơ sở kết nối mặc định. Những
21
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
ví dụ dưới đây được áp dụng cho tất cả những loại cơ sở dữ liệu mà được cung cấp
trong file này.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.
5. Cấu hình kết nối cơ sở dữ liệu trong Laravel Framework
- Các bạn 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' => '',
),
Với đoạn cấu hình trên thì các bạn cần quan tâm cho mình 4 thông số cấu
hình sau:
' '.
1. host: Cấu hình host,các bạn giữ nguyên là localhost.
2. database: Cấu hình tên cơ sở dữ liệu mà bạn đang sử dụng.
3. username: Tài khoản có quyền truy cập vào cơ sở dữ liệu.
4. password: Mật khẩu của tài khoản ở trên.
Do mình đang sử dụng Xampp lên mặc định username = 'root' và password =
Để phục vụ cho những đoạn code test này mình sẽ tạo 1 bảng dữ liệu sau:
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(128) CHARACTER SET utf8 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
AUTO_INCREMENT=12 ;
- Thực hiện chạy câu lệnh truy vấn, sau khi đã kết nối vào hệ thống:
1. Chạy câu lệnh truy vẫn dữ liệu:
$results = DB::select('select * from users where id = ?', array(1));
Với phương thức selectchúng ta sẽ lấy ra được dữ liệu trả về dạng mảng
2. Chạy câu lệnh thêm dữ liệu vào cơ sở dữ liệu:
DB::insert('insert into users (id, name) values (?, ?)', array(1, 'hocphp'));
3. Chạy câu lệnh cập dữ liệu:
DB::update('update users set name = "nobitacnt" where id = ?',
array('1'));
4. Chạy câu lệnh xóa dữ liệu:
DB::delete('delete from users');
Ghi chú: Câu lệnh insert và câu lệnh delete luôn trả về con số record bị ảnh
hưởng. 5. Câu lệnh xóa bảng:
DB::statement('drop table users');
22
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
5.1 Database Transactions
Để thao tác những câu lệnh bên trong transaction cơ sở dữ liệu, bạn có thể
dùng phương thức transaction:
DB::transaction(function()
{
DB::table('users')->update(array('id' => 1));
DB::table('posts')->delete();
});
Ghi chú: Bất kỳ câu lệnh nào cũng được đưa vào transaction, và transaction
cũng sẽ thực thi rollback một cách tự động.
1. Để bắt đầu 1 transaction ta thực hiện:
DB::beginTransaction();
2. Bạn cũng có thể rollback qua phương thức:
DB::rollback();
3. Cuối cùng thì bạn cần commit nó lên:
DB::commit();
- Khi mà bạn sử dụng nhiều hơn 1 cơ sở dữ liệu và muốn thực hiện truy vấn
thì các bạn có thể sử dụng phương thức:
DB::connection
Ví dụ mình có cấu hình như sau,với 2 cơ sở dữ liệu
//cơ sở dữ liệu 1,là chính
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'laravel',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' =>
'utf8_unicode_ci', 'prefix' => '',
),
//cơ sở dữ liệu 2
'mysql2' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'laravel2',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' =>
'utf8_unicode_ci', 'prefix' => '',
),
Và kết nối mặc định của chúng ta sẽ kết nối tới cơ sở dữ liệu mysql,còn trong
trường hợp muốn kết nối tới cơ sở dữ liệu 2 ta sử dụng:
23
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
$users = DB::connection('mysql2')->select('select * from user');
print_r($users);
5.2 Sử dụng Query Builder
Query Builder giúp ta trong việc thao tác cỡ sở dữ liệu một cách thuận lợi
hơn,với những câu lệnh truy vấn đơn giản thân thiện để tạo và chạy những truy vấn
từ cơ sở dữ liệu (CSDL). Nó thường được sử dụng để thực thi hầu hết những thao
tác về CSDL trong ứng dụng của bạn, và làm việc với tất cả những CSDL được hổ
trợ. Query Builder sử dụng PDO (PHP Data Objects) nhằm bảo vệ ứng dụng và
tránh các lỗi về SQL injection. Query Builder xây dựng lớp DB để thực hiện các
câu truy vấn. Chúng ta sẽ cùng đi tìm hiểu các phương thức quan trọng trong lớp
DB này:
– Để phục vụ cho loạt ví dụ ở dưới chúng ta cùng tạo 1 bảng dữ liệu để thực
hành:
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(128) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`)
24
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
CHƯƠNG 3 : PHÂN TÍCH THIẾT KẾ HỆ THỐNG
1. Phân tích yêu cầu
1.1. Xác Định Tác Nhân
Người dùng : Người dùng là học viên, người nghiên cứu về lập trình, người muốn tìm hiểu
thông tin, ghé thăm website để đọc các bài viết có giá trị về mặt nội dung mà không cần đăng
nhập, đăng ký để được làm thành viên.
Thành viên : Thành viên là người dùng phải thông qua thủ tục đăng nhập, ghé thăm website để
đọc, bình luận và chia sẻ các bài viết có giá trị về mặt nội dung.
Quản trị viên : Quản trị viên là thành viên có quyền cao nhất được thiết lập từ trước, ghé thăm
website để đọc, bình luận và chia sẻ các bài viết có giá trị về mặt nội dung. Quản trị viên có thể
quản trị thành viên, quản trị bài viết, quản trị bình luận.
1.2. Xác Định Tính Năng
• Người dùng : Xem, Tìm Kiếm, Đăng Ký.
• Thành viên : Xem, Tìm Kiếm, Đăng Nhập, Đăng Xuất, Bình Luận.
• Quản trị viên : Xem, Tìm Kiếm, Đăng Nhập, Đăng Xuất, Bình Luận, Quản Lý Thành Viên,
Quản Lý Bài Viết, Quản Lý Bình Luận.
1.3. Phân Tích Tính Năng
ID U01
Chức Năng Xem
Tiêu Đề Là Người Dùng, Thành Viên hoặc Quản Trị Viên, tôi muốn nhìn thấy các bài viết
mới nhất khi truy cập Website, có thể xem bài viết chi tiết.
Mô Tả Điều kiện: U01 được thực hiện.
Đầu vào: Người Dùng, Thành Viên hoặc Quản Trị Viên truy cập vào trang chủ
hoặc trang bài viết.
Đầu ra: Hiển thị thông tin, hình ảnh, nội dung bài viết sắp xếp theo bố cục hợp
lý.
ID U02
Chức Năng Tìm Kiếm
Tiêu Đề Là Người Dùng, Thành Viên hoặc Quản Trị Viên, tôi muốn tìm kiếm bài viết dựa
trên tiêu đề của bài viết.
Mô Tả Điều kiện: U02 được thực hiện.
Đầu vào: Người Dùng, Thành Viên hoặc Quản Trị Viên gõ trên thanh công cụ tìm
kiếm của website 1 phần hoặc toàn bộ tiêu đề.
Đầu ra: Hiển thị thông tin, hình ảnh các bài viết có 1 phần hoặc toàn bộ tiêu đề
25
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
trùng khớp với nội dung được nhập vào.
ID U03
Chức Năng Đăng Ký
Tiêu Đề Là Người Dùng tôi muốn đăng ký thông tin để trở thành thành viên của website.
Mô Tả Điều kiện: U03 được thực hiện.
Đầu vào: Người Dùng nhập thông tin vào mẫu đăng ký Thành Viên.
Đầu ra: Hiển thị mẫu đăng ký Thành Viên và xác nhận đăng ký thành công qua
email gửi tới Người Dùng.
ID U04
Chức Năng Đăng Nhập
Tiêu Đề Là Thành Viên, Quản Trị Viên tôi muốn đăng nhập bằng cách sử dụng thông tin
đã đăng ký hoặc đã được cấp trước đó để sử dụng những tính năng dành cho
Thành Viên hoặc Quản Trị Viên.
Mô Tả Điều kiện: U04 được thực hiện.
Đầu vào: Thành Viên hoặc Quản Trị Viên nhập thông tin vào mẫu đăng nhập và
ấn vào nút đăng nhập đi kèm mẫu.
Đầu ra: Hiển thị thông báo đăng nhập thành công đến cho Thành Viên hoặc
chuyển tiếp tới trang quản trị cho Quản Trị Viên.
ID U05
Chức Năng Đăng Xuất
Tiêu Đề Là Thành Viên, Quản Trị Viên tôi muốn đăng xuất để thoát khỏi quyền sử dụng
của Thành Viên hoặc Quản Trị Viên.
Mô Tả Điều kiện: U05 được thực hiện.
Đầu vào: Thành Viên hoặc Quản Trị Viên ấn vào nút đăng xuất ở góc bên phải
trang web.
Đầu ra: Hiển thị thông báo đăng xuất thành công đến cho Thành Viên, Quản Trị
Viên.
ID U06
Chức Năng Bình Luận
Tiêu Đề Là Thành Viên, Quản Trị Viên tôi muốn bình luận trong một bài viết nào đó trên
website.
Mô Tả Điều kiện: U04, U06 được thực hiện.
Đầu vào: Thành Viên, Quản Trị Viên nhập thông tin vào biểu mẫu cuối mỗi bài
viết và ấn nút Bình Luận.
Đầu ra: Hiển thị thông tin Bình Luận ngay dưới bài viết.
ID U07
Chức Năng Quản Lý Thành Viên
26
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
Tiêu Đề Là Quản Trị Viên tôi muốn quản lý tất cả các thành viên hiện có trên website như
thêm – sửa – xóa.
Mô Tả Điều kiện: U04, U07 được thực hiện.
Đầu vào: Quản Trị Viên truy cập vào trang quản lý thành viên với các nút ấn
tương ứng như Thêm – Sửa – Xóa thành viên.
Đầu ra: Hiển thị thông tin đầy đủ, mạch lạc theo bảng các thành viên và các chức
năng tương ứng được thực hiện rành mạch.
ID U08
Chức Năng Quản Lý Bài Viết
Tiêu Đề Là Quản Trị Viên tôi muốn quản lý tất cả các bài viết hiện có trên website như
thêm – sửa – xóa.
Mô Tả Điều kiện: U04, U08 được thực hiện.
Đầu vào: Quản Trị Viên truy cập vào trang quản lý bài viết với các nút ấn tương
ứng như Thêm – Sửa – Xóa bài viết.
Đầu ra: Hiển thị thông tin đầy đủ, mạch lạc theo bảng các bài viết và các chức
năng tương ứng được thực hiện rành mạch.
ID U09
Chức Năng Quản Lý Bình Luận
Tiêu Đề Là Quản Trị Viên tôi muốn quản lý tất cả các bình luận hiện có trên website như
thêm – sửa – xóa.
Mô Tả Điều kiện: U04, U08 được thực hiện.
Đầu vào: Quản Trị Viên truy cập vào trang quản lý bình luận với các nút ấn
tương ứng như Thêm – Sửa – Xóa bài viết.
Đầu ra: Hiển thị thông tin đầy đủ, mạch lạc theo bảng các bài viết và các chức
năng tương ứng được thực hiện rành mạch.
27
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
1.4. Sơ Đồ Use Case
Sơ Đồ 2.1 Use Case Khách
Sơ Đồ 2.2. Use Case Thành Viên
28
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
Sơ Đồ 2.3. Use Case Quản Trị Viên
Sơ Đồ 2.4. Use Case Tổng Quát
29
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
posts
2. Phân thích và thiết kế cơ sở dữ liệu
2.1 Bảng Dữ Liệu
users
id Integer PK, Auto Increment
name Varchar (100)
email Varchar (100) Unique
password Varchar (100) Encrypt
created_at Timestamp
updated_at Timestamp
deleted_at Timestamp
roles
id Integer PK, Auto Increment
name Varchar Unique
created_at Timestamp
updated_at Timestamp
deleted_at Timestamp
role_user
id Integer PK, Auto Increment
role_id Integer FK
user_id Integer FK
created_at Timestamp
updated_at Timestamp
deleted_at Timestamp
categories
id Integer PK, Auto Increment
parent_id Integer
name Varchar (100)
slug Varchar (100) Unique
created_at Timestamp
updated_at Timestamp
deleted_at Timestamp
30
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
id Integer PK, Auto Increment
title Varchar
(100)
slug Varchar
(100)
Unique
description Text
content LongText
user_id Integer FK
created_at Timestam
p
updated_at Timestam
p
deleted_at Timestam
p
category_post
id Integer PK, Auto Increment
category_id Integer FK
post_id Integer FK
created_at Timestamp
updated_at Timestamp
deleted_at Timestamp
comments
id Integer PK, Auto Increment
comment Varchar (100)
user_id Integer FK
post_id Integer FK
created_at Timestamp
updated_at Timestamp
deleted_at Timestamp
images
id Integer PK, Auto Increment
name Varchar (100)
alt Varchar (100)
slug Varchar (100) Unique
path Varchar (100)
extension Varchar (100)
mime_type Varchar (100)
size Double
31
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
created_at Timestamp
updated_at Timestamp
deleted_at Timestamp
image_post
id Integer PK, Auto Increment
image_id Integer
post_id Integer
created_at Timestamp
updated_at Timestamp
deleted_at Timestamp
2.2 Mối Quan Hệ Giữa Các Bảng
CHƯƠNG 3: GIAO DIỆN WEBSITE
1. Trang Người Dùng
1.1 Giao diện
Ở giao diện trang chủ của website cho phép khách hàng được xem các mặt hàng mĩ
phẩm được trưng bày.
32
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
Hình 1: Giao diện
Hình 2: Sản phẩm trưng bày
1.2 Đăng ký/ Đăng nhập
Để mua được hàng trong shop thì khách hàng truy cập vào trang đăng ký. Khi đã đăng
kí tài khoản thì sau đó chúng ta vào trang chủ để đăng nhập vào tài khoản mà mình đã
tạo trước đó, khi đó ta có thế vào lựa chọn các sản phẩm mà mình yêu thích và tiến hành
đặt hàng nhé.
33
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
Hình 3. Đăng kí
Hình 4: Đăng nhập
1.3 Giỏ hàng
Sau khi đăng nhập thành công ta có thể mua hàng thông qua các sản phẩm có tại web.
34
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
Hình 5: Giỏ hàng
1.4 Mua hàng
Để mua được hàng thì khách hàng phải nhập đẩy đủ và chính xác các thông tin trên:
Hình 6: Thông tin khách hàng
Ví dụ minh họa:
35
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
Hình 7: Nhập thông tin
Sau khi nhấn vào Đặt Hàng thì hệ thống sẽ tự động lưu lại những thông tin và lên đơn
giao hàng cho khách hàng.
2. Trang Quản Trị
Quản trị website là bao gồm các công việc như: Duy trì Server, sửa lỗi code, thiết kế,
theo dõi traffic, bảo dưỡng. Ngoài ra còn quản lý content, đánh giá và tối ưu SEO…
nhằm đảm bảo website vận hành trơn tru cũng như nâng cao trải nghiệm người dùng.
36
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
Hình 8: Giao diện Admin
2.1 Đăng nhập
Hình 9: Đăng nhập tài khoản
2.2 Thêm sản phẩm
Nhấn vào Add New để thêm sản phẩm.
Hình 10: Thêm sản phẩm
37
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
Hình 11: Ví dụ
Hình 12: Sản phẩm đã được thêm vào trang người dung
38
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
1. Kết luận
CHƯƠNG 4: KẾT LUẬN
– Phân tích được nguyên lý vận hành của công nghệ web;
– Đánh giá được giao diện phù hợp với nhu cầu doanh nghiệp;
– Đánh giá được các công nghệ khả thi với môi trường (phần cứng, phần mềm) hiện có
để triển khai ứng dụng web trên máy chủ và trên máy khách;
– Lựa chọn được các ứng dụng môi trường cần thiết cho máy chủ web;
– Phân tích được yêu cầu của khách hàng về ứng dụng web;
– Phân tích được hệ thống thông tin, cơ sở dữ liệu;
2. Hướng phát triển
• Nội dung chất lượng.
• Thiết kế web chuẩn seo.
• Sử dụng các công cụ thống kê
• Cập nhật website thường xuyên.
• Chú trọng vào tương tác khách hàng.
• Chiến lược Marketing để thúc đẩy trang web của bạn.
• Chỉnh chu đến từng hình ảnh.
39
Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com)
CHƯƠNG 5 : DANH MỤC CÁC TÀI LIỆU THAM KHẢO
[1] Khóa học Laravel
[2] Trang web: https://laravel.com
[3] Trang web: https://unitop.vn
[4] Trang web: Hướng dẫn cách chạy laragon
[5] Youtube: Học lập trình Laravel
40

More Related Content

PDF
Báo cáo thực tập tốt nghiệp xây dựng website bằng laravel
DOC
Báo cáo hoan chỉnh
PDF
Devwork.vn Tài liệu lập trình PHP Laravel
DOCX
Toan finish
DOC
Báo cáo hoan chỉnh
DOC
Báo cáo hoan chỉnh
DOCX
BÁO CÁO ĐỒ ÁN CHUYÊN NGÀNH LẬP TRÌNH WEB .NET MVC 5 BÁN HÀNG CÔNG NGHỆ.docx
DOC
Luận Văn Xây Dựng Trang Web Cho Hợp Tác Xã Nông Nghiệp Và Du Lịch Cộng Đồng C...
Báo cáo thực tập tốt nghiệp xây dựng website bằng laravel
Báo cáo hoan chỉnh
Devwork.vn Tài liệu lập trình PHP Laravel
Toan finish
Báo cáo hoan chỉnh
Báo cáo hoan chỉnh
BÁO CÁO ĐỒ ÁN CHUYÊN NGÀNH LẬP TRÌNH WEB .NET MVC 5 BÁN HÀNG CÔNG NGHỆ.docx
Luận Văn Xây Dựng Trang Web Cho Hợp Tác Xã Nông Nghiệp Và Du Lịch Cộng Đồng C...

Similar to doanlaravel-do-an-chuyen-nganh-laravel.docx (20)

DOCX
Bài tập seo web môn quản trị dự án đầu tư và thương mại
PDF
BC-PHPLaravel.pdf
DOCX
Báo cáo thực tập tốt nghiệp xây dựng website ẩm thực việt.docx
PDF
Laravel 5 framework
DOCX
Lập trình web Bán hàng công nghệ.docx
PDF
Hỏi tình hình bk tiny bktiny-hdsd
DOC
luan van thac si xay dung trang web du lich cong dong co loa
DOCX
Báo cáo thực tập tốt nghiệp xây dựng website ẩm thực việt.docx
PPT
Xây dựng website thương mại điện tử
DOCX
Bài giữa kì cntmdt.docx
DOC
Luận Văn Công Nghệ Thông Tin Quản Lý Giao Việc Theo Sự Kiện.doc
PPTX
Slidebaocao
DOCX
QUẢN LÝ VÀ CHIA SẺ PROJECT IOT,CÁC BÀI VIẾT HỌC TẬP CHO SINH VIÊN.docx
PDF
Xây dựng website bán hàng qua mạng
DOCX
Hiện thực website thương mại diện tử và SEO thực tế trên chính website đó
PPTX
Slide - ĐATN.pptxsdfdfsdafádsdfsdaffsdfsdfa
PPTX
Leduongbaolamewqe3asdsadasdsvsdfsdfsd.pptx
PDF
Luận văn: Xây dựng website đa ngôn ngữ cho Công ty, HOT
Bài tập seo web môn quản trị dự án đầu tư và thương mại
BC-PHPLaravel.pdf
Báo cáo thực tập tốt nghiệp xây dựng website ẩm thực việt.docx
Laravel 5 framework
Lập trình web Bán hàng công nghệ.docx
Hỏi tình hình bk tiny bktiny-hdsd
luan van thac si xay dung trang web du lich cong dong co loa
Báo cáo thực tập tốt nghiệp xây dựng website ẩm thực việt.docx
Xây dựng website thương mại điện tử
Bài giữa kì cntmdt.docx
Luận Văn Công Nghệ Thông Tin Quản Lý Giao Việc Theo Sự Kiện.doc
Slidebaocao
QUẢN LÝ VÀ CHIA SẺ PROJECT IOT,CÁC BÀI VIẾT HỌC TẬP CHO SINH VIÊN.docx
Xây dựng website bán hàng qua mạng
Hiện thực website thương mại diện tử và SEO thực tế trên chính website đó
Slide - ĐATN.pptxsdfdfsdafádsdfsdaffsdfsdfa
Leduongbaolamewqe3asdsadasdsvsdfsdfsd.pptx
Luận văn: Xây dựng website đa ngôn ngữ cho Công ty, HOT
Ad

doanlaravel-do-an-chuyen-nganh-laravel.docx

  • 1. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) Doanlaravel - đồ án chuyên ngành laravel Công Nghệ Thông Tin (Trường Cao đẳng Công nghệ Tây Nguyên) Scan to open on Studocu Studocu is not sponsored or endorsed by any college or university
  • 2. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) 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 ĐỒ ÁN CHUYÊN NGÀNH XÂY DỰNG WEBSITE BÁN MĨ PHẨM BẰNG LARAVEL Sinh viên: Phan Thị Thanh Quy MSSV: 2120110347 Lớp: CCQ2011D GVHD: Chu Thị Mai TP.HCM, 15/12/2022
  • 3. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) LỜI MỞ ĐẦU PHẦN 1. MỞ ĐẦU 1. Lý do chọn đề tài Laravel là một web application framework của PHP. Được đánh giá là một trong những Framework có cú pháp đẹp, ngắn gọn và dễ nhớ nhất trong các PHP Framework. Laravel cung cấp cho bạn một kiến trúc tốt để bạn có thể bắt đầu project của mình mà không cần phải thay đổi, chỉnh sửa thêm. Trải qua nhiều version khác nha, Laravel ngày càng chứng minh được những nỗ lực của mình trong việc cố gắng đem lại cho lập trình viên những trải nghiệm tốt nhất. Bằng chứng là Laravel đưa vào những tính năng tuyệt vời phục vụ cho quá trình phát triển web như: Database Abstract Layer, Queues, Scheduled jobs, Unit and integration testing và nhiều hơn thế nữa... Khi mức độ phổ biến của sự phát triển của Laravel đang tăng lên với tốc độ ấn tượng, nhu cầu về các tính năng tương tự cũng tăng lên. Để đáp ứng nhu cầu mua hàng ngày càng tăng này, một số ứng dụng đã sẵn sàng hiện có sẵn trên thị trường có thể được sử dụng để thêm một loạt các tính năng vào trang web của Laravel. Với các ứng dụng đã sẵn sàng, chi phí phát triển tổng thể giảm xuống rất nhiều. Có một số tính năng thú vị khác của Laravel framework khiến nó trở thành một trong những nền tảng được ưa chuộng nhất để phát triển web. 2. Mục đích nghiên cứu (các kết quả cần đạt được). • Xây dựng website bán mĩ phẩm. • Giới thiệu và trưng bày được các mặt hàng • Nhanh chóng hiệu quả • 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 mĩ phẩm . Phạm vi nghiên cứu: Xây dựng một trang web bán lẻ, chuyên bán sản phẩm các mặt hàng mĩ phẩm trong nước và các mặt hàng nội địa. 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 và tổng hợp tài liệu để xây dựng một website. ❖ Quá trình tin học để xây dựng website thương mại điện tử.
  • 4. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) NHẬN XẾT CỦA GIÁO VIÊN …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… Tp.HCM, ngày…,tháng…năm 2022 Giáo viên hướng dẫn (Kí tên)
  • 5. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) Mục Lục LỜI MỞ ĐẦU ...............................................................................................................2 PHẦN 1. MỞ ĐẦU.......................................................................................................2 1. Lý do chọn đề tài..................................................................................................2 2. Mục đích nghiên cứu (các kết quả cần đạt được) ................................................2 3. Đối tượng và phạm vi nghiên cứu........................................................................2 4. Phương pháp nghiên cứu: ....................................................................................2 PHẦN 2. LÝ THUYẾT.................................................................................................6 CHƯƠNG 1: TỔNG QUAN.........................................................................................6 1. PHP Framework là gì? .........................................................................................6 2. Tại sao nên sử dụng PHP Framework?................................................................6 3. Tại sao nên sử dụng Laravel Framework?.............................................................6 CHƯƠNG 2: GIỚI THIỆU LARAVEL ......................................................................7 1. Cấu trúc thư mục của Laravel..............................................................................7 2. Cài đặt Laravel.....................................................................................................8 2.1 Chạy ứng dụng đầu tiên với Laravel ................................................................9 2.2 Route trong Laravel Framework.......................................................................9 2.3 Basic Routing....................................................................................................9 2.4 Route Parameters............................................................................................10 2.5 Route Filters ...................................................................................................11 2.6 Name Route ....................................................................................................12 2.7 Route Groups..................................................................................................13 2.8 Route Prefixing...............................................................................................13 3. View trong Laravel Framework .........................................................................14 4. Controller trong Laravel Framework ...................................................................15 4.1 Khai báo Controller trong Laravel Framework: .............................................15 4.2 Chạy Controller theo phương thức Route::get................................................16 4.3 Implicit Controllers – Sử dụng phương thức Route::controller......................16 4.4 RESTfulResourceControllers–Sửdụng phương thức Route::resource............17 4.5 Controller với Filter........................................................................................19 4.6 Kết nối cơ sở dữ liệu.......................................................................................20 5. Cấu hình kết nối cơ sở dữ liệu trong Laravel Framework .................................20
  • 6. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) 5.1 Database Transactions ....................................................................................22 5.2 Sử dụng Query Builder...................................................................................23 CHƯƠNG 3 : PHÂN TÍCH THIẾT KẾ HỆ THỐNG ................................................24 1. Phân tích yêu cầu ...............................................................................................24 1.1. Xác Định Tác Nhân .....................................................................................24 1.2. Xác Định Tính Năng....................................................................................24 1.3. Phân Tích Tính Năng...................................................................................24 1.4. Sơ Đồ Use Case...........................................................................................27 2. Phân thích và thiết kế cơ sở dữ liệu ...................................................................29 2.1 Bảng Dữ Liệu ..............................................................................................29 2.2 Mối Quan Hệ Giữa Các Bảng......................................................................31 CHƯƠNG 3: GIAO DIỆN WEBSITE ...................................................................32 1. Trang Người Dùng..............................................................................................32 1.1 Giao diện.........................................................................................................32 1.2 Đăng ký/ Đăng nhập.......................................................................................32 1.3 Giỏ hàng..........................................................................................................34 1.4 Mua hàng ........................................................................................................34 2. Trang Quản Trị.....................................................................................................35 2.1 Đăng nhập.......................................................................................................36 2.2 Thêm sản phẩm...............................................................................................36 CHƯƠNG 4: KẾT LUẬN...........................................................................................38 1. Kết luận..............................................................................................................38 2. Hướng phát triển ................................................................................................38 CHƯƠNG 5 : DANH MỤC CÁC TÀI LIỆU THAM KHẢO....................................39
  • 7. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) PHẦN 2. LÝ THUYẾT CHƯƠNG 1: TỔNG QUAN 1. PHP Framework là gì? PHP là ngôn ngữ kịch bản phổ biến nhất của thế giới vì nhiều lý do khác nhau - tính linh hoạt, dễ dàng sử dụng, trong số những người khác - nhưng thường mã hóa trong PHP, hoặc vấn đề về ngôn ngữ, có thể nhận được khá đơn điệu và lặp đi lặp lại. Đó là một framework PHP có thể được trợ giúp. Dòng phát triển của PHP framework trên các ứng dụng web viết trên nền tảng PHP.Được cung cấp một cấu trúc cơ bản để xây dựng các ứng dụng web. Nói cách khác, PHP framework giúp đỡ thúc đẩy phát triển các ứng dụng nhanh chóng (RAD), giúp bạn tiết kiệm thời gian, giúp xây dựng các ứng dụng ổn định hơn, và làm giảm số lượng mã hóa lặp đi lặp lại cho developer. Framework có thể giúp người mới bắt đầu để xây dựng các ứng dụng ổn định hơn bằng cách đảm bảo tương tác cơ sở dữ liệu phù hợp và mã (PHP) và giao diện (HTML) một 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 thực tế, thay vì dành thời gian viết các đoạn mã lặp đi lặp lại trong một project. 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ốc quá trình phát triển ứng dụng. Việc sử dụng lại các mã lệnh giống nhau trong nhiề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 1 project, 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 projec 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á… . 6
  • 8. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) 7
  • 9. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) CHƯƠNG 2: GIỚI THIỆU LARAVEL 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ư : Folder / File Mô tả app Thư mục app, chứa tất cả các project được tạo, hầu hết các class trong project được tạo đều ở trong đây. Không giống các framwork khác, các file model không được chứa trong một thư mục riêng biệt, mà được chứa ngay tại thư mục app này. app/Console Thư mục Console, chứa các tập tin định nghĩa các câu lệnh trên artisan. app/Exceptions Thư mục Exceptions, chứa các tập tin quản lý, điều hướng lỗi. app/Http/Controllers Thư mục Controllers, chứa các controller của project. app/Http/Middleware Thư mục Middleware, chứa các tập tin lọc và ngăn chặn các requests. app/Providers Thư mục Providers, chứa các file thực hiện việc khai báo service và bind vào trong Service Container. bootstrap Thư mục bootstrap, chứa những file khởi động của framework và những file cấu hình auto loading, route, và file cache. config Thư mục config, chứa tất cả những file cấu hình. database Thư mục database, chứa 2 thư mục migration (tạo và thao tác database) và seeds (tạo dữ liệu mẫu), tiện lợi để lưu trữ dữ liệu sau này. database/factories Thư mục factories, chứa các file định nghĩa các cột bảng dữ liệu để tạo ra các dữ liệu mẫu. database/migrations Thư mục migrations, chứa các file tạo và chỉnh sửa dữ liệu. database/seeds Thư mục seeds, chứa các file tạo dữ liệu thêm vào CSDL. public Thư mục public, chứa file index.php giống như cổng cho tất cả các request vào project, bên trong thư mục còn chứa file JavaScript, và CSS. resources Thư mục resources, chứa những file view và raw, các file biên soạn như LESS, SASS, hoặc JavaScript. Ngoài ra còn chứa tất cả các file lang trong project. resources/views Thư mục views, chứa các file view xuất giao diện người dùng. routes Thư mục routes, chứa tất cả các điều khiển route (đường dẫn) trong project. Chứa các file route sẵn có: web.php, channels.php, api.php, và console.php. routes/api.php file api.php, điều khiển các route của ứng dụng, như route của ứng dụng User (đăng ký, đăng nhập, ...). routes/web.php file web.php, điều khiển các route của view, như route của trang top, sản phẩm, ... storage Thư mục storage, chứa các file biên soạn blade templates của bạn, file based sessions, file caches, và những file sinh ra từ project. • Thư mục app, dùng để chứa những file sinh ra từ project. • Thư mục framework, chứa những file sinh ra từ framework và caches. • Thư mục logs, chứa những file logs. 8
  • 10. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) composer create-project --prefer-dist laravel/laravel: ^8 laravel8 composer global require laravel/installer • Thư mục /storage/app/public, lưu những file người dùng tạo ra như hình ảnh. tests Thư mục tests, chứa những file tests, như PHPUnit test. vendor Thư mục vendor, chứa các thư viện của Composer. .env file .env, chứa các config chính của Laravel. artisan file thực hiện lệnh của Laravel. .gitattributes .gitignore File dành cho xử lý git. composer.json composer.lock composer-setup.php File của Composer. package.js file package.js, chứa các package cần dùng cho projects. phpunit.xml file phpunit.xml, xml của phpunit dùng để testing project. webpack.mix.js file webpack.mix.js, file dùng để build các webpack. 2. Cài đặt Laravel Chúng ta cài Laravel với composer và cũng có 2 cách để cài đặt laravel • Composer create-project • Composer laravel installer. Lưu ý về phiên bản PHP Laravel 8 yêu cầu PHP >= 7.3 vì vậy các bạn cần nâng cấp PHP của mình trước khi cài Cài qua composer create-project. Đối với cách này các bạn chỉ cần sử dụng câu lệnh sau: VD: Chúng ta cài laravel vào thư mục laravel8. Tại htdocs shift + chuột phải --> open PowerShell windows here hoặc mở cmder lên gõ vào lệnh sau Lưu ý: nếu ban muốn cài đặt phiên bản laravel 8 mới nhất thì các bạn sử dụng lệnh sau: composer create-project --prefer-dist laravel/laravel:8. * laravel8 Cài qua laravel installer. Trước hết phải cài laravel/installer package bằng lệnh sau Sau khi đã cài đặt thành công laravel/installer các bạn cần chắc chắn $PATH trên máy của các bạn đã thêm composer bin. Cài đặt laravel bằng câu lệnh sau: 9 composer create-project --prefer-dist laravel/laravel: ten_project
  • 11. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) php artisan serve Trong đó folder_name là tên folder chứa code laravel của bạn. Chạy Laravel. Để chạy laravel các bạn cần trỏ đến thư mục vừa cài đặt laravel và chạy câu lệnh. Ví dụ mình truy cập vào thư mục laravel8 bật cmder và gõ lệnh Chạy thành công truy cập vào link http://localhost:8000/ Chúng ta thấy trang welcome của laravel 8 là thành công. 2.1 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’; }); - 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.2 Route trong Laravel Framework Mục đích của router là định tuyến đến những controller cụ thể nào từ phía request của người sử dụng. Đối với những Framework khác thì khi các bạn muố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ểm khác biệt lớn của Laravel Framework đối với các Framework khác. 2.3 Basic Routing - Các định tuyến trong Laravel đều được viết trong app/route.php. Cú pháp đơn giản nhất của 1 định tuyến đó là: Route::method(‘URI’,’Function call back’) Trong đó thì: + 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, đây chí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. 10 laravel new folder_name
  • 12. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) - 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. Ví dụ: Các bạn mở file app/route.php và 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 đó thì kienthuc24h chính là thư mục dự án). Khi các bạn chạy link này lập tức trong Route sẽ kiểm tra và gọi đúng tới hàm callback. Sau khi chạy trang này các bạn sẽ nhận được thông báo như ý muốn. - 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: Ví dụ: Route::method(‘Tên định danh’,’Tham số’); Route::get(“san-pham”,”ProductController@list”); Với ví dụ trên có nghĩa là khi chúng ta chạy link san-pham lúc này bộ điều hướng sẽ gọi tới controller là ProducController và phương thức (action) là list. 2.4 Route Parameters - Trong trường hợp các bạn muốn gửi kèm theo tham số cho bộ định tuyến thì chỉ cần khai báo theo dạng{Tên tham số} và trong hàm callback chúng ta coi nó như tham số trong hàm bình thường. Ví dụ: Route::get(‘/san-pham/{name}/{id}’, function($name,$id) { echo ‘Bạn đang xem sản phẩm’.$name.’có ID = ’.&id; }); Tiếp theo bạn truy cập vào đường link localhost/kienthuc24h/san- pham/nokia520/1 và kết quả sẽ là: 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){ 11
  • 13. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) 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 Route Filters - Đây chính là phần bộ lọc định tuyến, nó cho phép chúng ta có thể kiểm tra trước khi cập nhật vào đường dẫn đó (URI). Ứng dụng trong thực tế là kiểm tra trạ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ý Ví dụ: }); Route:: 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ện kiể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 controller ProductController 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. 12
  • 14. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) - 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 }); + Như các bạn thấy tham số thứ 3 $value chính là giá trị mà chúng ta sẽ truyền vào, ví dụ: Route::filter(“checkId”, function($route, $request,$value){ // Xử lý dữ liệu if($value<=0) { echo ‘Id khong hop le’; } }); Route::get(‘/check-id’,array(“before”=>”checkId:-1”,”uses”=>” DemoController@checkid“)); + 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ủa filter trong thực tế phải không nào. Với filter ta có thể tối giản code ở mức cao nhất và tái sử dụng vô cùng đơn giản. 2.6 Name Route - Đặt tên cho các Route nhằm sử dụng linh hoạt cho ứng dụng. Dễ dàng lấy được thông tin của Route thông qua tên này. Ví dụ: Route::get(‘/san-pham/{name}/{id}’, array(‘as’=>’product’,’uses’=>Produ ctController@view)); $url= URL::route(“product”,array(‘nokia520’,’1’)); 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. 13
  • 15. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) + 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: <?php class ProductController extends BaseController{ public function view($name,$id) { echo ‘Bạn đang xem sản phẩm’.$name.’có ID = ’.$id; } } và kết quả sẽ hiển thị ra như sau: Bạn đang xem sản phẩm nokia520 có ID = 1 2.7 Route Groups - Route Groups sẽ giúp chúng ta có thể nhóm các Route mà cần thông qua 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 đăng nhậ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ụng Route 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”)); Route::get(‘/cap-nhat-danh-muc’,array(“uses”=>”CatalogControl ler@update”)); }); + Như vậy là khi các bạn truy cập vào các link ở trên thì sẽ được thông qua Filter checklogin kiểm trước. 14
  • 16. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) 2.8 Route Prefixing - Gồm 1 số các định tuyến mà đằng trước nó có tiền tố. Ví dụ: localhost/kienthuc24h/admin/them-san-pham localhost/kienthuc24h/admin/cap-nhat-san-pham localhost/kienthuc24h/admin/them-danh-muc localhost/kienthuc24h/admin/cap-nhat-danh-muc - Với các đường link trên thì các bạn thấy trước nó đều có tiền tố (Prefix) là admin phải không nào. Lúc này chúng ta hoàn toàn có thể cho nó vào 1 nhóm có tiền tố admin và thực hiện kiểm tra. Ví dụ: Route::group(array(“prefix”=>”admin”,”before”=>”checklogin”), function(){ // phần sử lý nằm ở đây. }); Với ví dụ trên thì mình đang nhóm tất cả các link có tiền tố là admin, và trước khi truy cập vào những link này mình sẽ thực hiện gọi tới Filter checklogin để kiểm tra xem đã đăng nhập chưa. 3. View trong Laravel Framework - Như đã đề cập ở trên thì thư mục view dùng để chứa các file mẫu như html để tương tác với người sử dụng nằm trong thư mục (app/view). - Để sử dụng view ta có thể sử dụng như sau: return View::make("Tên",Đối số nếu có); Ví dụ trong app/route.php ta có đường dẫn sau: Route::get("name",function(){ return View::make("hoten"); // gọi file view có tên là: app/views/hoten.php }); <!-- View stored in app/views/hoten.php --> <html> <body> <h1>Hello, <?php echo $name; ?></h1> </body> </html> Sau đó ta tạo file app/views/hoten.php với nội dung là ” Tên tôi là Tính” . khi chạy thử đường link http://localhost/kienthuc24h/public/name thì ta sẽ thấy kết quả. Vậy nếu ta muốn truyền đối số cho view thì sao. Bạn có nhiều cách để làm điều đó. 15
  • 17. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) 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 này bạn đang truyền sang view hoten.php một đối số có tên là $name. Do vậy tại hoten.php bạn có thể dùng nó như sau: echo "Họ tên của bạn là: $name"; Cách 2: Truyền qua 1 phương thức tên with(). Route::get("name3",function(){ return View::make('hoten')->with('name', 'Steve'); }); Và ở view hoten.php ta hoàn toàn có thể sử dụng $name dễ dàng. Nhưng với cách này, bạn sẽ rất khó để truyền nhiều giá trị cho view. Cách 3: Sử dụng hàm compact() trong PHP. Route::get("name4",function(){ $name = "Framgia"; return View::make("hoten",compact("name")); }); Và ở view abcd.php bạn chỉ việc sử dụng $id một cách dễ dàng. Trong trường hợp bạn muốn thao đặt view trong thực mục cho gọn gàng. Bạn có thể sử dụng phân cách, thay vì là dấu / thì bạn sẽ dùng dấu “.”. Route::get("name",function(){ return View::make("demo.hoten"); }); 4. Controller trong Laravel Framework - Như các bạn được biết trong Laravel cho phép chúng ta có thể xử lý dữ liệu ngay bên trong Route nhưng đối với những thao tác phức tạp và dài chúng ta lên xử lý trong Controller.Có như vậy thì ứng dụng của bạn mới trở nên linh hoạt và dễ mở rộng sau này. 4.1 Khai báo Controller trong Laravel Framework: – Để tạo 1 controller các bạn cần vào thư mục app/controller với các quy tắc sau: 1. Tên file trùng với tên Class. 16
  • 18. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) 2. Kế thừa từ lớp BaseController. Ví dụ, tạo 1 file HocphpController.php với nội dung: <?php class HocphpController extends BaseController { public function test(){ echo 'Tim hieu ve Controller trong Laravel tai kienthuc24h'; } } 4.2 Chạy Controller theo phương thức Route::get - Trước tiên các bạn truy cập vào file routes.php thêm nội dung sau: Route::get('/controller-test', 'HocphpController@test'); Với đoạn code cấu hình trên ta đã khai báo 1 link controller-test sẽ gọi tới controller HocphpController và phương thức(action) là test.Như vậy khi các chạy link localhost/kienthuc24h/public/controller-test sẽ hiển thị nội dung như ý muốn: Tim hieu ve Controller trong Laravel tai kienthuc24 Chúng ta sẽ đi thêm vào 1 ví dụ nữa về việc truyền tham số vào controller thế nào nhé.Trong HocphpController tạo phương thức sau: <?php class HocphpController extends BaseController { public function view($title, $id) { echo 'Bạn đang xem bài viết '.$title.' có ID là :'.$id; } } Và file routes.php ta cấu hình như sau: Route::get('/bai-viet-{title}/{id}', 'HocphpController@view'); Và khi các bạn chạy link localhost/laravel/public/bai-viet-hocphp/1 sẽ nhận được kết quả: Bạn đang xem bài viết hocphp có ID là :1 Như vậy các bạn thấy chúng ta đã gửi thành công 2 biến đó chính là $title = hocphp và $id = 1. 4.3 Implicit Controllers – Sử dụng phương thức Route::controller Như các bạn thấy trong 1 controller chúng ta thường có khá nhiều các phương thức(action) phải không nào,như vậy chả lẽ mỗi lần muốn chạy 1 action nào đó lại phải vào file routes.php để thêm cấu hình sao?như vậy cũng thật bất tiện và khó quản lý phải không nào.Trong Larvel còn cho phép chúng ta có thể chạy các phương thức trong controller 1 cách tự động dựa vào tên action đó. + Trước tiên các bạn vào file routes.php thêm đoạn code cấu hình như sau: Route::controller('hocphp', 'HocphpController'); Với phương thức Route::controller cho phép chúng ta sử dụng 2 đối số, đối số thứ nhất chính là định dạnh URI,đối số thứ 2 chính là tên lớp controller.Trong ví 17
  • 19. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) Hình 2.5: Ánh xạ giữa route và action Và dưới đây là 1 ví dụ đơn giản trong controller HocphpController: dụ trên mình đã định nghĩa 1 URI có tên hocphp đại diện cho lớp controller HocphpController. + Tiếp theo chúng ta cần chỉnh sửa nội dung file controller như sau: <?php class HocphpController extends BaseController { public function getTest(){ echo 'Tim hieu ve Controller trong Laravel tai kienthuc24h'; } } Như các bạn thấy nếu chúng ta cấu hình theo phương thức Route::controller trong routes thì trong controller chúng ta cũng phải viết đúng theo các quy tắc trong Laravel như sau: + Trước các action phải có các tiền tố là các giá trị get, post, any…các giá trị này các bạn có thể xem lại về Route phía trên và tên action phải viết hoa chữ cái đầu. + Tên phương thức phân biệt chữ hoa và chứ thường. + Khi muốn chạy action thì chạy theo dạng link URI/tên action viết thường. Và lúc này chúng ta muốn chạy action test thì sẽ chạy đường link sau: locaho st/kienthuc24h/public/hocphp/test, thì sẽ được kết quả như mong đợi. 4.4 RESTfulResourceControllers–Sửdụng phương thức Route::resource - Để lập một controller qua câu lệnh command line, thì ta thực hiện: php artisan controller:make HocphpController - Bây giờ bạn có thể xử lý một resourceful route tới controller: Route::resource('hocphp', 'HocphpController'); Việc lập route đơn này sẽ xử lý nhiều route của RESTful actions trên nguồn hocphp. Dưới đây là bảng ánh xạ giữa route và action: <?php class HocphpController extends BaseController { /** * Hocphp Repository 18
  • 20. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) * * @var Hocphp */ protected $Hocphp; /** * Display a listing of the resource. * * @return Response */ public function index() { } * Show the form for creating a new resource. * * @return Response */ public function create() { } /** * Store a newly created resource in storage. * * @return Response */ public function store() { } /** * Display the specified resource. * * @param int $id * @return Response */ public function show($id) { } /** 19
  • 21. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) * Show the form for editing the specified resource. * * @param int $id * @return Response */ public function edit($id) { } /** * Update the specified resource in storage. * * @param int $id * @return Response */ public function update($id) { } /** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { } } - Như vậy những việc quản lý dữ liệu(hiển thị ,thêm, sửa, xóa) các bạn có thể viết tại controller này. Ngoài ra thì bạn có thể giới hạn được những action nào được thực thi: Route::resource('hocphp', 'HocphpController', array('only' => array('index', 'show'))); Route::resource('hocphp', 'HocphpController', array('except' => array('create', 'store', 'update', 'destroy'))); 4.5 Controller với Filter - Trong phần Route phía trên mình đã giới thiệu về filters trong Laravel.Đây chính là phần bộ lọc định tuyến,nó cho phép chúng ta có thể kiểm tra trước khi truy cập vào đường dẫn đó.Như vậy các bạn hoàn toàn có thể sử dụng filters để lọc dữ liệu với Controller.Bạn có thể khai báo trên file route như sau: 20
  • 22. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) Route::get('add', array('before' => 'auth', 'uses' => 'HocphpController@store')); - Ngoài ra các bạn còn có thể sử dụng filters ngay tại trong Controller,ví dụ: <?php class HocphpController extends BaseController { public function construct() { $this->beforeFilter('auth', array('except' => 'getLogin')); $this->beforeFilter('csrf', array('on' => 'post')); } } - Bạn cũng có thể chỉnh định cho filter bằng cách sử dụng Closure: <?php class HocphpController extends BaseController { /** * Instantiate a new UserController instance. */ public function construct() { $this->beforeFilter(function() { //code here }); } } - Nếu bạn muốn sử dụng một phương thức khác làm filter thì ban có thể thêm @ để định nghĩa filter: <?php class HocphpController extends BaseController { public function construct() { $this->beforeFilter('@filterRequests');; } public function filterRequests($route, $request){ //code here } } } => Như vậy các bạn thấy việc sử dụng Filter cho Controller có rất nhiều cách phải không nào. 4.6 Kết nố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, tất nhiên là chúng cũng có loại cơ sở kết nối mặc định. Những 21
  • 23. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) ví dụ dưới đây được áp dụng cho tất cả những loại cơ sở dữ liệu mà được cung cấp trong file này.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. 5. Cấu hình kết nối cơ sở dữ liệu trong Laravel Framework - Các bạn 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' => '', ), Với đoạn cấu hình trên thì các bạn cần quan tâm cho mình 4 thông số cấu hình sau: ' '. 1. host: Cấu hình host,các bạn giữ nguyên là localhost. 2. database: Cấu hình tên cơ sở dữ liệu mà bạn đang sử dụng. 3. username: Tài khoản có quyền truy cập vào cơ sở dữ liệu. 4. password: Mật khẩu của tài khoản ở trên. Do mình đang sử dụng Xampp lên mặc định username = 'root' và password = Để phục vụ cho những đoạn code test này mình sẽ tạo 1 bảng dữ liệu sau: CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(128) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=12 ; - Thực hiện chạy câu lệnh truy vấn, sau khi đã kết nối vào hệ thống: 1. Chạy câu lệnh truy vẫn dữ liệu: $results = DB::select('select * from users where id = ?', array(1)); Với phương thức selectchúng ta sẽ lấy ra được dữ liệu trả về dạng mảng 2. Chạy câu lệnh thêm dữ liệu vào cơ sở dữ liệu: DB::insert('insert into users (id, name) values (?, ?)', array(1, 'hocphp')); 3. Chạy câu lệnh cập dữ liệu: DB::update('update users set name = "nobitacnt" where id = ?', array('1')); 4. Chạy câu lệnh xóa dữ liệu: DB::delete('delete from users'); Ghi chú: Câu lệnh insert và câu lệnh delete luôn trả về con số record bị ảnh hưởng. 5. Câu lệnh xóa bảng: DB::statement('drop table users'); 22
  • 24. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) 5.1 Database Transactions Để thao tác những câu lệnh bên trong transaction cơ sở dữ liệu, bạn có thể dùng phương thức transaction: DB::transaction(function() { DB::table('users')->update(array('id' => 1)); DB::table('posts')->delete(); }); Ghi chú: Bất kỳ câu lệnh nào cũng được đưa vào transaction, và transaction cũng sẽ thực thi rollback một cách tự động. 1. Để bắt đầu 1 transaction ta thực hiện: DB::beginTransaction(); 2. Bạn cũng có thể rollback qua phương thức: DB::rollback(); 3. Cuối cùng thì bạn cần commit nó lên: DB::commit(); - Khi mà bạn sử dụng nhiều hơn 1 cơ sở dữ liệu và muốn thực hiện truy vấn thì các bạn có thể sử dụng phương thức: DB::connection Ví dụ mình có cấu hình như sau,với 2 cơ sở dữ liệu //cơ sở dữ liệu 1,là chính 'mysql' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'laravel', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), //cơ sở dữ liệu 2 'mysql2' => array( 'driver' => 'mysql', 'host' => 'localhost', 'database' => 'laravel2', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '', ), Và kết nối mặc định của chúng ta sẽ kết nối tới cơ sở dữ liệu mysql,còn trong trường hợp muốn kết nối tới cơ sở dữ liệu 2 ta sử dụng: 23
  • 25. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) $users = DB::connection('mysql2')->select('select * from user'); print_r($users); 5.2 Sử dụng Query Builder Query Builder giúp ta trong việc thao tác cỡ sở dữ liệu một cách thuận lợi hơn,với những câu lệnh truy vấn đơn giản thân thiện để tạo và chạy những truy vấn từ cơ sở dữ liệu (CSDL). Nó thường được sử dụng để thực thi hầu hết những thao tác về CSDL trong ứng dụng của bạn, và làm việc với tất cả những CSDL được hổ trợ. Query Builder sử dụng PDO (PHP Data Objects) nhằm bảo vệ ứng dụng và tránh các lỗi về SQL injection. Query Builder xây dựng lớp DB để thực hiện các câu truy vấn. Chúng ta sẽ cùng đi tìm hiểu các phương thức quan trọng trong lớp DB này: – Để phục vụ cho loạt ví dụ ở dưới chúng ta cùng tạo 1 bảng dữ liệu để thực hành: CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(128) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) 24
  • 26. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) CHƯƠNG 3 : PHÂN TÍCH THIẾT KẾ HỆ THỐNG 1. Phân tích yêu cầu 1.1. Xác Định Tác Nhân Người dùng : Người dùng là học viên, người nghiên cứu về lập trình, người muốn tìm hiểu thông tin, ghé thăm website để đọc các bài viết có giá trị về mặt nội dung mà không cần đăng nhập, đăng ký để được làm thành viên. Thành viên : Thành viên là người dùng phải thông qua thủ tục đăng nhập, ghé thăm website để đọc, bình luận và chia sẻ các bài viết có giá trị về mặt nội dung. Quản trị viên : Quản trị viên là thành viên có quyền cao nhất được thiết lập từ trước, ghé thăm website để đọc, bình luận và chia sẻ các bài viết có giá trị về mặt nội dung. Quản trị viên có thể quản trị thành viên, quản trị bài viết, quản trị bình luận. 1.2. Xác Định Tính Năng • Người dùng : Xem, Tìm Kiếm, Đăng Ký. • Thành viên : Xem, Tìm Kiếm, Đăng Nhập, Đăng Xuất, Bình Luận. • Quản trị viên : Xem, Tìm Kiếm, Đăng Nhập, Đăng Xuất, Bình Luận, Quản Lý Thành Viên, Quản Lý Bài Viết, Quản Lý Bình Luận. 1.3. Phân Tích Tính Năng ID U01 Chức Năng Xem Tiêu Đề Là Người Dùng, Thành Viên hoặc Quản Trị Viên, tôi muốn nhìn thấy các bài viết mới nhất khi truy cập Website, có thể xem bài viết chi tiết. Mô Tả Điều kiện: U01 được thực hiện. Đầu vào: Người Dùng, Thành Viên hoặc Quản Trị Viên truy cập vào trang chủ hoặc trang bài viết. Đầu ra: Hiển thị thông tin, hình ảnh, nội dung bài viết sắp xếp theo bố cục hợp lý. ID U02 Chức Năng Tìm Kiếm Tiêu Đề Là Người Dùng, Thành Viên hoặc Quản Trị Viên, tôi muốn tìm kiếm bài viết dựa trên tiêu đề của bài viết. Mô Tả Điều kiện: U02 được thực hiện. Đầu vào: Người Dùng, Thành Viên hoặc Quản Trị Viên gõ trên thanh công cụ tìm kiếm của website 1 phần hoặc toàn bộ tiêu đề. Đầu ra: Hiển thị thông tin, hình ảnh các bài viết có 1 phần hoặc toàn bộ tiêu đề 25
  • 27. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) trùng khớp với nội dung được nhập vào. ID U03 Chức Năng Đăng Ký Tiêu Đề Là Người Dùng tôi muốn đăng ký thông tin để trở thành thành viên của website. Mô Tả Điều kiện: U03 được thực hiện. Đầu vào: Người Dùng nhập thông tin vào mẫu đăng ký Thành Viên. Đầu ra: Hiển thị mẫu đăng ký Thành Viên và xác nhận đăng ký thành công qua email gửi tới Người Dùng. ID U04 Chức Năng Đăng Nhập Tiêu Đề Là Thành Viên, Quản Trị Viên tôi muốn đăng nhập bằng cách sử dụng thông tin đã đăng ký hoặc đã được cấp trước đó để sử dụng những tính năng dành cho Thành Viên hoặc Quản Trị Viên. Mô Tả Điều kiện: U04 được thực hiện. Đầu vào: Thành Viên hoặc Quản Trị Viên nhập thông tin vào mẫu đăng nhập và ấn vào nút đăng nhập đi kèm mẫu. Đầu ra: Hiển thị thông báo đăng nhập thành công đến cho Thành Viên hoặc chuyển tiếp tới trang quản trị cho Quản Trị Viên. ID U05 Chức Năng Đăng Xuất Tiêu Đề Là Thành Viên, Quản Trị Viên tôi muốn đăng xuất để thoát khỏi quyền sử dụng của Thành Viên hoặc Quản Trị Viên. Mô Tả Điều kiện: U05 được thực hiện. Đầu vào: Thành Viên hoặc Quản Trị Viên ấn vào nút đăng xuất ở góc bên phải trang web. Đầu ra: Hiển thị thông báo đăng xuất thành công đến cho Thành Viên, Quản Trị Viên. ID U06 Chức Năng Bình Luận Tiêu Đề Là Thành Viên, Quản Trị Viên tôi muốn bình luận trong một bài viết nào đó trên website. Mô Tả Điều kiện: U04, U06 được thực hiện. Đầu vào: Thành Viên, Quản Trị Viên nhập thông tin vào biểu mẫu cuối mỗi bài viết và ấn nút Bình Luận. Đầu ra: Hiển thị thông tin Bình Luận ngay dưới bài viết. ID U07 Chức Năng Quản Lý Thành Viên 26
  • 28. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) Tiêu Đề Là Quản Trị Viên tôi muốn quản lý tất cả các thành viên hiện có trên website như thêm – sửa – xóa. Mô Tả Điều kiện: U04, U07 được thực hiện. Đầu vào: Quản Trị Viên truy cập vào trang quản lý thành viên với các nút ấn tương ứng như Thêm – Sửa – Xóa thành viên. Đầu ra: Hiển thị thông tin đầy đủ, mạch lạc theo bảng các thành viên và các chức năng tương ứng được thực hiện rành mạch. ID U08 Chức Năng Quản Lý Bài Viết Tiêu Đề Là Quản Trị Viên tôi muốn quản lý tất cả các bài viết hiện có trên website như thêm – sửa – xóa. Mô Tả Điều kiện: U04, U08 được thực hiện. Đầu vào: Quản Trị Viên truy cập vào trang quản lý bài viết với các nút ấn tương ứng như Thêm – Sửa – Xóa bài viết. Đầu ra: Hiển thị thông tin đầy đủ, mạch lạc theo bảng các bài viết và các chức năng tương ứng được thực hiện rành mạch. ID U09 Chức Năng Quản Lý Bình Luận Tiêu Đề Là Quản Trị Viên tôi muốn quản lý tất cả các bình luận hiện có trên website như thêm – sửa – xóa. Mô Tả Điều kiện: U04, U08 được thực hiện. Đầu vào: Quản Trị Viên truy cập vào trang quản lý bình luận với các nút ấn tương ứng như Thêm – Sửa – Xóa bài viết. Đầu ra: Hiển thị thông tin đầy đủ, mạch lạc theo bảng các bài viết và các chức năng tương ứng được thực hiện rành mạch. 27
  • 29. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) 1.4. Sơ Đồ Use Case Sơ Đồ 2.1 Use Case Khách Sơ Đồ 2.2. Use Case Thành Viên 28
  • 30. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) Sơ Đồ 2.3. Use Case Quản Trị Viên Sơ Đồ 2.4. Use Case Tổng Quát 29
  • 31. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) posts 2. Phân thích và thiết kế cơ sở dữ liệu 2.1 Bảng Dữ Liệu users id Integer PK, Auto Increment name Varchar (100) email Varchar (100) Unique password Varchar (100) Encrypt created_at Timestamp updated_at Timestamp deleted_at Timestamp roles id Integer PK, Auto Increment name Varchar Unique created_at Timestamp updated_at Timestamp deleted_at Timestamp role_user id Integer PK, Auto Increment role_id Integer FK user_id Integer FK created_at Timestamp updated_at Timestamp deleted_at Timestamp categories id Integer PK, Auto Increment parent_id Integer name Varchar (100) slug Varchar (100) Unique created_at Timestamp updated_at Timestamp deleted_at Timestamp 30
  • 32. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) id Integer PK, Auto Increment title Varchar (100) slug Varchar (100) Unique description Text content LongText user_id Integer FK created_at Timestam p updated_at Timestam p deleted_at Timestam p category_post id Integer PK, Auto Increment category_id Integer FK post_id Integer FK created_at Timestamp updated_at Timestamp deleted_at Timestamp comments id Integer PK, Auto Increment comment Varchar (100) user_id Integer FK post_id Integer FK created_at Timestamp updated_at Timestamp deleted_at Timestamp images id Integer PK, Auto Increment name Varchar (100) alt Varchar (100) slug Varchar (100) Unique path Varchar (100) extension Varchar (100) mime_type Varchar (100) size Double 31
  • 33. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) created_at Timestamp updated_at Timestamp deleted_at Timestamp image_post id Integer PK, Auto Increment image_id Integer post_id Integer created_at Timestamp updated_at Timestamp deleted_at Timestamp 2.2 Mối Quan Hệ Giữa Các Bảng CHƯƠNG 3: GIAO DIỆN WEBSITE 1. Trang Người Dùng 1.1 Giao diện Ở giao diện trang chủ của website cho phép khách hàng được xem các mặt hàng mĩ phẩm được trưng bày. 32
  • 34. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) Hình 1: Giao diện Hình 2: Sản phẩm trưng bày 1.2 Đăng ký/ Đăng nhập Để mua được hàng trong shop thì khách hàng truy cập vào trang đăng ký. Khi đã đăng kí tài khoản thì sau đó chúng ta vào trang chủ để đăng nhập vào tài khoản mà mình đã tạo trước đó, khi đó ta có thế vào lựa chọn các sản phẩm mà mình yêu thích và tiến hành đặt hàng nhé. 33
  • 35. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) Hình 3. Đăng kí Hình 4: Đăng nhập 1.3 Giỏ hàng Sau khi đăng nhập thành công ta có thể mua hàng thông qua các sản phẩm có tại web. 34
  • 36. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) Hình 5: Giỏ hàng 1.4 Mua hàng Để mua được hàng thì khách hàng phải nhập đẩy đủ và chính xác các thông tin trên: Hình 6: Thông tin khách hàng Ví dụ minh họa: 35
  • 37. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) Hình 7: Nhập thông tin Sau khi nhấn vào Đặt Hàng thì hệ thống sẽ tự động lưu lại những thông tin và lên đơn giao hàng cho khách hàng. 2. Trang Quản Trị Quản trị website là bao gồm các công việc như: Duy trì Server, sửa lỗi code, thiết kế, theo dõi traffic, bảo dưỡng. Ngoài ra còn quản lý content, đánh giá và tối ưu SEO… nhằm đảm bảo website vận hành trơn tru cũng như nâng cao trải nghiệm người dùng. 36
  • 38. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) Hình 8: Giao diện Admin 2.1 Đăng nhập Hình 9: Đăng nhập tài khoản 2.2 Thêm sản phẩm Nhấn vào Add New để thêm sản phẩm. Hình 10: Thêm sản phẩm 37
  • 39. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) Hình 11: Ví dụ Hình 12: Sản phẩm đã được thêm vào trang người dung 38
  • 40. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) 1. Kết luận CHƯƠNG 4: KẾT LUẬN – Phân tích được nguyên lý vận hành của công nghệ web; – Đánh giá được giao diện phù hợp với nhu cầu doanh nghiệp; – Đánh giá được các công nghệ khả thi với môi trường (phần cứng, phần mềm) hiện có để triển khai ứng dụng web trên máy chủ và trên máy khách; – Lựa chọn được các ứng dụng môi trường cần thiết cho máy chủ web; – Phân tích được yêu cầu của khách hàng về ứng dụng web; – Phân tích được hệ thống thông tin, cơ sở dữ liệu; 2. Hướng phát triển • Nội dung chất lượng. • Thiết kế web chuẩn seo. • Sử dụng các công cụ thống kê • Cập nhật website thường xuyên. • Chú trọng vào tương tác khách hàng. • Chiến lược Marketing để thúc đẩy trang web của bạn. • Chỉnh chu đến từng hình ảnh. 39
  • 41. Downloaded by Phú Hu?nh Th?nh (phuhynhpen@gmail.com) CHƯƠNG 5 : DANH MỤC CÁC TÀI LIỆU THAM KHẢO [1] Khóa học Laravel [2] Trang web: https://laravel.com [3] Trang web: https://unitop.vn [4] Trang web: Hướng dẫn cách chạy laragon [5] Youtube: Học lập trình Laravel 40