Tải bản đầy đủ (.pdf) (58 trang)

Xây dựng website bán hàng cho công ty may mặc an thắng, hà nội

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.39 MB, 58 trang )

LỜI CẢM ƠN
Để hoàn thành tốt đồ án này, lời đầu tiên em xin cám ơn Ban Giám Hiệu
trường Đại Học Công Nghệ Thông Tin & Truyền Thông đã tạo điều kiện cho em
được học tập tại trường, và đặc biệt em xin gửi lời cám ơn chân thành nhất đến cô
Đoàn Thị Bích Ngọc giảng viên Trường Công Nghệ Thông Tin & truyền thông đã
trang bị cho em những kiến thức chuyên môn, quan tâm và tận tình hướng dẫn, giúp
đỡ em hoàn thành một cách tốt nhất trong đợt làm đồ án này.
Bên cạnh đó để hoàn thành tốt đồ án này em cũng đã nhận được nhiều sự
giúp đỡ những lời động viiên quý báu của bạn bè, các anh chị em xin chân thành
cảm ơn.
Tuy nhiên do thời gian hạn hẹp, cũng như lượng kiến thức còn hạn chế nên
bài báo cáo của em sẽ khó tránh khỏi những thiếu sót. Em rất mong nhận được sự
thông cảm và sự chỉ bảo tận tình của quý Thầy Cô và các bạn để thực hiện tốt đồ án
này. Một lần nữa em xin chân thành cảm ơn.

Thái Nguyên, ngày….tháng…..năm 2017
Sinh viên thực hiện

Trương Văn Mạnh

1


LỜI CAM ĐOAN
Tôi xin cam đoan bài đồ án tốt nghiệp là do chính tôi thực iện, số liệu và
kết quả nghiên cứu trong luận văn này là trung thực và chưa hề được sử dụng
để bảo vệ một học vị nào. Các thông tin trích dẫn trong đồ án đã được chỉ rõ
nguồn gốc rõ ràng và được phép công bố.
Xin chân thành cảm ơn !
Thái Nguyên, ngày….tháng…..năm 2017
Sinh viên thực hiện



Trương Văn Mạnh

2


MỤC LỤC
LỜI CẢM ƠN ......................................................................................................... 1
LỜI CAM ĐOAN .................................................................................................... 2
MỤC LỤC .............................................................................................................. 3
DANH MỤC HÌNH ................................................................................................ 5
LỜI NÓI ĐẦU ........................................................................................................ 6
CHƯƠNG 1:CƠ SỞ LÝ THUYẾT ......................................................................... 7
1.1.Ngôn ngữ PHP ............................................................................................... 7
1.1.1Tổng quan về PHP .................................................................................... 7
1.1.2 Lịch sử ra đời và phát triển ....................................................................... 8
1.1.3 Xuất giá trị ra trình duyệt ......................................................................... 8
1.1.4 Biến ,hằng,chuỗi và các kiểu dữ liệu ........................................................ 9
1.1.5 Phương thức trong PHP .......................................................................... 10
1.2.Tổng quan về laravel .................................................................................... 10
1.2.1 Laravel là gì ........................................................................................... 10
1.2.2 Lịch sử phát triển ................................................................................... 10
1.3 Cài đặt laravel .............................................................................................. 12
1.4 Sơ lược các tính năng cơ bản của laravel ...................................................... 15
1.5 Làm việc với laravel ..................................................................................... 16
1.5.1 Route trong laravel ................................................................................. 16
1.5.2 Controller trong laravel .......................................................................... 19
1.5.3 View trong laravel .................................................................................. 20
1.5.4 Model trong laravel ................................................................................ 22
1.5.5 Sử dụng Blade Template ........................................................................ 24

1.5.6 Làm việc với dữ liệu .............................................................................. 29
CHƯƠNG 2: KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG .................. 31
2.1 Khảo sát đánh giá hệ thống cũ ...................................................................... 31
2.1.1 Hoạt động bán hàng của công ty diễn ra trên thực tế như sau ................. 31
2.1.2 Đánh giá sản phẩm ................................................................................. 31
2.2 Phân tích thiết kế hệ thống............................................................................ 32

3


2.2.1 Các tác nhân của hệ thống ...................................................................... 32
2.2.2 Phân tích yêu cầu hệ thống ..................................................................... 33
2.2.3 Thiết kế hệ thống.................................................................................... 36
CHƯƠNG 3:XÂY DỰNG WEBSITE ................................................................... 50
3.1 Giao diện trang chủ ...................................................................................... 50
3.2 Giao diện trang chi tiết sản phẩm.................................................................. 51
3.3 Giao diện trang giỏ hàng .............................................................................. 52
3.4 Giao diện trang thanh toán............................................................................ 53
3.5 Giao diện trang liên hệ ................................................................................. 54
3.6 Giao diện trang thông tin user....................................................................... 55
KẾT LUẬN ........................................................................................................... 56
TÀI LIỆU THAM KHẢO ..................................................................................... 57

4


DANH MỤC HÌNH
Hình 2.3.3.1:Biểu đồ UC tổng quát........................................................................ 36
Hình 2.3.3.2:Biểu đồ UC khách hàng .................................................................... 36
Hình 2.3.3.3:Biểu đồ UC admin ............................................................................ 37

Hình 2.3.3.4:Biểu đồ trình tự cho chức năng đăng ký ............................................ 37
Hình 2.3.3.5:Biểu đồ trình tự chức năng tìm kiếm ................................................. 38
Hình 2.3.3.6:Biểu đồ trình tự chức năng xem chi tiết sản phẩm ............................. 38
Hình 2.3.3.7 Biểu đồ trình tự thêm sản phẩm vào giỏ hang .................................... 39
Hình 2.3.3.8:Biểu đồ trình tự quản lí giỏ hàng ....................................................... 40
Hình 2.3.3.9:Biểu đồ trình tự chức năng thanh toán ............................................... 41
Hình 3.3.3.10:Biểu đồ trình tự chức năng đăng nhập admin................................... 42
Hình 3.3.3.11:Biểu đồ trình tự chức năng thêm sản phẩm ...................................... 43
Hình 3.3.3.13 Biểu đồ trình tự sửa sản phẩm ......................................................... 44
Hình 3.3.3.12:Biểu đồ trình tự quản lí đơn hàng cho admin ................................... 45
Hình 3.3.3.13:Biểu đồ cộng tác đăng nhập hệ thống .............................................. 46
Hình 3.3.3.14:Biểu đồ hoạt động quản lí sản phẩm ................................................ 47
Hình 3.3.3.15:Biểu đồ hoạt động xem chi tiết sản phẩm ........................................ 48

5


LỜI NÓI ĐẦU
Tin học đã và đang được phát triển rộng rãi trong hầu hết các lĩnh vực của
nền kinh tế xã hội. Việc ứng dụng rộng rãi của tin học đã đem lại những thành tựu
vô cùng to lớn trong nhiều nghành, nhiều lĩnh vực khác nhau, đặc biệt trong lĩnh
vực quản lý và lưu trữ. Trước tình hình đó, là một sinh viên nghành công nghệ
thông tin đang được học tập trong ĐH CNTT& TT- Đại học Thái Nguyên em luôn
có nguyện vọng muốn đem những kiến thức mới về công nghệ thông tin áp dụng
vào đời sống nói chung và công tác quản lý nói riêng.
Với công nghệ Word Wide Web, hay còn gọi là Web sẽ giúp bạn đưa những
thông tin mong muốn của mình lên mạng Internet cho mọi người cùng xem một
cách dễ dàng với các công cụ và những ngôn ngữ lập trình khác nhau. Sự ra đời của
các ngôn ngữ lập trình cho phép chúng ta xây dựng các trang Web đáp ứng được
các yêu cầu của người sử dụng. PHP (Personal Home Page) là kịch bản trên phía

trình chủ (Server Script) cho phép chúng ta xây dựng trang Web trên cơ sở dữ liệu.
Với nhiều ưu điểm nổi bật mà PHP và MySQL được rất nhiều người sử dụng.
Với lí do đó, được sự hướng dẫn và giúp đỡ của cô giáo Thạc sĩ Đoàn Thị
Bích Ngọc, em lựa chọn đề tài “Xây dựng website bán hàng cho công ty may
mặc An Thắng, Hà Nội”.
* Mục đích nghiên cứu
- Khảo sát yêu cầu thực tế tại công tyđể nắm bắt các thông tin về sản phẩm
mà công ty đang sản xuất, quy trình quản lý, đồng thời thu nhập các biểu mẫu
chứng từ thực tế tại công ty.
- Phân tích thiết kế hệ thống dựa trên các nội dung khảo sát.
- Tìm hiểu các ngôn ngữ lập trình cần thiết để thiết kế và xây dựng website

6


CHƯƠNG 1:CƠ SỞ LÝ THUYẾT
1.1.Ngôn ngữ PHP
1.1.1Tổng quan về PHP
PHP (Hypertext Preprocessor) được giới thiệu năm 1994 bởi R. Lerdoft, như
một bộ sưu tập của ngôn ngữ chưa chặt chẽ dựa vào Perl và các công cụ của trang
chủ. Vì quá trình xử lý dựa trên máy chủ nên các trang Web được viết bằng PHP sẽ
dễ dàng hơn ở bất cứ hệ điều hành nào. Nói một cách ngắn gọn: PHP là một ngôn
ngữ lập trình kiểu script, chạy trên Server và trả về mã HTML cho trình duyệt.
PHP (Hypertext Preprocessor) được giới thiệu năm 1994 bởi R. Lerdoft, như
một bộ sưu tập của ngôn ngữ chưa chặt chẽ dựa vào Perl và các công cụ của trang
chủ. Vì quá trình xử lý dựa trên máy chủ nên các trang Web được viết bằng PHP sẽ
dễ dàng hơn ở bất cứ hệ điều hành nào. Nói một cách ngắn gọn: PHP là một ngôn
ngữ lập trình kiểu script, chạy trên Server và trả về mã HTML cho trình duyệt.
Cũng giống như hầu hết các ngôn ngữ lập trình khác, PHP có thể nối trực
tiếp với HTML, Mã PHP tách biệt với HTML bằng các thực thể đầu và cuối.

Khi một tài liệu được đưa ra phân tích, quá trình xử lý PHP chỉ được thực hi
ện ở những điểm quan trọng, rồi sau đó đưa ra kết quả.
Mã PHP được đặt trong một kiểu tag đặc biệt cho phép ta có thể vào hoặc ra
khỏi chế độ PHP,cú pháp của PHP cơ bản cũng giống như một số ngôn ngữ lập
trình khác, đặc biệt là C và Perl.
PHP được nhận dạng dưới 4 dạng phiên bản.
Ví dụ:
// bắt đầu php
<?php echo “Hello World”; ?>
// kết thúc php
Ví dụ

Với phiên bản 3 này PHP cũng cung cấp một số lượng cơ sở dữ liệu khá đồ
sộ gồm cả MySQL, mSQL, OPBC và Oracle,nó cũng có thể làm việc với các hình
ảnh các file dữ liệu, FTP, XML và host của các kĩ thuật ứng dụng khác.
Cho đến nay thì PHP đã được công bố tới phiên bản 5 và càng ngày càng
hoàn hảo và dễ sử dụng, và là một dịch vụ hàng đầu miễn phí. Một số nhà phát
triển ứng dụng web, thường sử dụng PHP để xây dựng các ứng dụng thương mại
điện tử cho đến thời điểm tháng 1 năm 2001 có 5 triệu tên miền trên thế giới sử
dụng PHP.
PHP là open source, điều này có nghĩa là bạn có thể làm việc trên mã nguồn,
thêm, sửa, sử dụng và phân phối chúng.
1.1.3 Xuất giá trị ra trình duyệt
Để xuất dữ liệu ra trình duyệt chúng ta có những dòng cú pháp sau:
echo "Thông tin";
printf "Thông tin"; Thông tin bao gồm : biến, chuỗi, hoặc lệnh HTML ….
Nếu giữa hai chuỗi muốn liên kết với nhau ta sử dụng dấu "."

8


1.1.4 Biến ,hằng,chuỗi và các kiểu dữ liệu
Biến
Biến được xem là vùng nhớ dữ liệu tạm thời. Và giá trị có thể thay đổi được.
Biến được bắt đầu bằng ký hiệu "$". Và theo sau chúng là 1 từ, 1 cụm từ nhưng
phải viết liền hoặc có gạch dưới. 1 biến được xem là hợp lệ khi nó thỏa các yếu tố :
+ Tên của biến phải bắt đầu bằng dấu gạch dưới và theo sau là các ký tự, số
hay dấu gạch dưới.
+ Tên của biến không được phép trùng với các từ khóa của PHP.
Trong PHP để sử dụng 1 biến chúng ta thường phải khai báo trước, tuy nhiên
đối với các lập trình viên khi sử dụng họ thường xử lý cùng một lúc các công việc,
nghĩa là vừa khai báo vừa gán dữ liệu cho biến. Bản thân biến cũng có thể gán cho

các kiểu dữ liệu khác. Và tùy theo ý định của người lập trình mong muốn trên
chúng.
Hằng
Nếu biến là cái có thể thay đổi được thì ngược lại hằng là cái chúng ta không
thể thay đổi được. Hằng trong PHP được định nghĩa bởi hàm define theo cú pháp:
define (string tên_hằng, giá_trị_hằng ).
Cũng giống với biến hằng được xem là hợp lệ thì chúng phải đáp ứng 1 số
yếu tố :
+ Hằng không có dấu "$" ở trước tên.
+ Hằng có thể truy cập bất cứ vị trí nào trong mã lệnh
+ Hằng chỉ được phép gán giá trị duy nhất 1 lần.
+ Hằng thường viết bằng chữ in để phân biệt với biến
Chuỗi
Chuỗi là một nhóm các kỹ tự, số, khoảng trắng, dấu ngắt được đặt trong các
dấu nháy.
Ví dụ: "Hello
"welcome to VietNam" Để tạo 1 biễn chuỗi, chúng ta phải gán giá trị chuỗi
cho 1 biến hợp lệ.

9


Ví dụ:
$fisrt_name= "Nguyen";
$last_name= ‘Van A’;

Để liên kết 1 chuỗi và 1 biến chúng ta thường sử

dụng dấu "."
Kiểu dữ liệu

Các kiểu dữ liệu khác nhau chiếm các lượng bộ nhớ khác nhau và có thể
được xử lý theo cách khác nhau khi chúng được theo tác trong 1 script. Trong PHP
chúng ta có 6 kiểu dữ liệu chính như sau : Chúng ta có thể sử dụng hàm dựng sẵn
GETtype() của PHP4 để kiểm tra kiểu của bất kỳ biến.
1.1.5 Phương thức trong PHP
Có 2 phương thức được sử dụng trong lập trình PHP là GET và POST:
Phương thức GET
Phương thức này cũng được dùng để lấy dữ liệu từ form nhập liệu. Tuy
nhiên nhiệm vụ chính của nó vẫn là lấy nội dung trang dữ liệu từ webserver. Ví dụ:
Với url sau: shownews.php?id=50

Vậy với trang shownews ta dùng hàm

$_GET["id"] sẽ được giá trị là 50.
Phương thức POST
Phương thức này được sử dụng để lấy dữ liệu từ form nhập liệu. Và chuyển
chúng lên trình chủ webserver.
1.2.Tổng quan về laravel
1.2.1 Laravel là gì
Laravel là một PHP framework mã nguồn mở và miễn phí, được phát triển
bởi Taylor Otwell và nhắm vào mục tiêu hỗ trợ phát triển các ứng dụng web theo
kiếm trúc model-view-controller (MVC). Những tính năng nổi bật của Laravel bao
gồm cú pháp dễ hiểu – rõ ràng , một hệ thống đóng gói modular và quản lý gói phụ
thuộc, nhiều cách khác nhau để truy cập vào các cơ sở dữ liệu quan hệ, nhiều tiện
ích khác nhau hỗ trợ việc triển khai vào bảo trì ứng dụng.
1.2.2 Lịch sử phát triển
Laravel được Taylor Otwell tạo ra như một giải pháp thay thế cho
CodeIgniter, cung cấp nhiều tính năng quan trọng hơn như xác thực và phân quyền.

10



Tôi cũng không chắc về điều này, nhưng có thể Taylor vốn là một .NET developer
khi bắt đầu có nhu cầu làm việc với PHP khoảng vào những năm 2010-2011, đã
chọn CodeIgniter khi đó đang là một ngôi sao mới nổi, thậm chí lấn át cả Symfony
gạo cội. Và Taylor nhanh chóng nhận ra những điểm khiếm khuyết ở CodeIgniter,
với tài năng và kiến thức xuất sắc về design-pattern của mình, Taylor quyết định tự
mình tạo ra một framework sao cho thật đơn giản, dễ hiểu, hỗ trợ lập trình viên hiện
thực ý tưởng một cách nhanh nhất bằng nhiều tính năng hỗ trợ như Eloquent ORM
mạnh mẽ, xác thực đơn giản, phân trang hiệu quả, và hơn thế nữa.
Bản Laravel beta đầu tiên được phát hành vào ngày 9/6/2011, tiếp đó là
Laravel 1 phát hành trong cùng tháng. Laravel 1 bao gồm các tính năng như xác
thực, bản địa hóa, model, view, session, định tuyến và các cơ cấu khác, nhưng vẫn
còn thiếu controller, điều này làm nó chưa thật sự là một MVC framework đúng
nghĩa.
Laravel 2 được phát hành vào tháng 9 năm 2011, mang đến nhiều cài tiến từ
tác giả và cộng đồng. Tính năng đáng kể bao gồm hỗ trợ controller, điều này thực
sự biến Laravel 2 thành một MVC framework hoàn chỉnh, hỗ trợ Inversion of
Control (IoC), hệ thống template Blade. Bên cạnh đó, có một nhược điểm là hỗ trợ
cho các gói của nhà phát triển bên thứ 3 bị gỡ bỏ.
Laravel 3 được phát hành vào tháng 2 năm 2012, với một tấn tính năng mới
bao gồm giao diện dòng lệnh (CLI) tên “Artisan”, hỗ trợ nhiều hơn cho hệ thống
quản trị cơ sở dữ liệu, chức năng ánh xạ cơ sở dữ liệu Migration, hỗ trợ “bắt sự
kiện” trong ứng dụng, và hệ thống quản lý gói gọi là “Bundles”. Lượng người dùng
và sự phổ biến tăng trưởng mạnh kể từ phiên bản Laravel 3.
Laravel 4 tên mã “Illuminate”, được phát hành vào tháng 5 năm 2013. Lần
này thực sự là sự lột xác của Laravel framework, di chuyển và tái cấu trúc các gói
hỗ trợ vào một tập được phân phối thông qua Composer, một chương trình quản lý
gói thư viện phụ thuộc độc lập của PHP. Bố trí mới như vậy giúp khả năng mở rộng
của Laravel 4 tốt hơn nhiều so với các phiên bản trước. Ra mắt lịch phát hành chính

thức mỗi sáu tháng một phiên bản nâng cấp nhỏ. các tính năng khác trong Laravel 4
bao gồm tạo và thêm dữ liệu mẫu (database seeding), hỗ trợ hàng đợi, các kiểu gởi

11


mail, và hỗ trợ “xóa mềm” (soft-delete: record bị lọc khỏi các truy vấn từ Eloquent
mà không thực sự xóa hẳn khỏi DB).
Laravel 5 được phát hành trong tháng 2 năm 2015, như một kết quả thay đổi
đáng kể cho việc kết thúc vòng đời nâng cấp Laravel lên 4.3. Bên cạnh một loạt tính
năng mới và các cải tiến như hiện tại, Laravel 5 cũng giới thiệu cấu trúc cây thư
mục nội bộ cho phát triển ứng dụng mới. Những tính năng mới của Laravel 5 bao
gồm hộ trợ lập lịch định kỳ thực hiện nhiệm vụ thông qua một gói tên là
“Scheduler”, một lớp trừu tượng gọi là “Flysystem” cho phép điều khiển việc lưu
trữ từ xa đơn giản như lưu trữ trên máy local – dễ thấy nhất là mặc định hỗ trợ dịch
vụ Amazone S3, cải tiến quản lý assets thông qua “Elixir”, cũng như đơn giản hóa
quản lý xác thực với các dịch vụ bên ngoài bằng gói “Socialite”.
Laravel 5.1 phát hành vào tháng 6 năm 2015, là bản phát hành đầu tiên nhận
được hỗ trợ dài hạng (LTS) với một kết hoạch fix bug lên tới 2 năm vào hỗ trợ vá
lỗi bảo mật lên tới 3 năm. Các bản phát hành LTS của Laravel được lên kế hoạch
theo mỗi 2 năm.
Laravel 5.2 đã chính thức ra mắt ngày 21/12/2015 . Phiên bản 5.2 lần này
bao gồm 1 số tính năng mới như:hỗ trợ multiple authentication ,authentication
scaffolding,implicit model binding…
Hiện nay laravel đã nâng cấp lên bản 5.4 phiên bản này có những một số đặc
điểm mới như: bạn có thể khai báo và sử dụng class Facade mọi nơi trong project
của mình mà không cần đăng ký với Providers như phiên bản 5.3, Cú pháp route
bây giờ được định nghĩa linh hoạt hơn,...
1.3 Cài đặt laravel
Chuẩn bị:

Xampp:Các bạn có thể tải bản mới nhất tại
/>Composer:Link tải tại />Yêu cầu
Để cài laravel yêu cầu một số cái sau:
PHP >=5.6.4

12


OpenSSL PHP Extension
PDO PHP Extension
Mbstring PHP Extension
Tokenizer PHP Extension
Cài đặt
Cài xampp
Các bạn cài đặt bình thường và chọn ổ mình muốn cài xampp. Ở đây mình
cài vào ổ C máy của mình.

Cài composer
Khi cài composer nó sẽ hỏi chọn đường dẫn file php.exe trên máy của bạn.
Lúc nãy mình cài xampp ở ổ C:\xampp thì file php.exe nó sẽ nằm ở trong
C:\xampp\php\php.exe

13


Tiếp theo mình sẽ hướng dẫn các bạn tạo một project laravel 5.3. Khi các
bạn dùng xampp thì mặc định project của các bạn sẽ để ở trong đường dẫn
C:\xampp\htdocs vì vậy các bạn mở cmd máy của các bạn lên và chuyển đến đường
folder htdocs trong xampp bằng cách gõ lệnh: cd C:\xampp\htdocs.


Để

tạo

một

project

bạn

dùng

lệnh:

composer

create-project

laravel/laravel ten_project. Lệnh này nó sẽ download trực tiếp project ở trên github
về máy tính của bạn - vì vậy máy tính bạn cần phải kết nối với internet. Các bạn có
thể xem ở hình bên dưới đây mình tạo một project tên là blog.

14


Sau đó các bạn vào thư mục project các bạn vừa tạo bằng lệnh trên cmd: cd
ten_project. Ở đây mình sẽ dùng lệnh cd blog vì mình tạo tên project của mình là
blog.

Để chạy được project thì các bạn gõ lệnh: php artisan serve. Khi đó các bạn

vào trình duyệt gõ đường dẫn http://localhost:8000, nó sẽ ra trang như bên dưới.

1.4 Sơ lược các tính năng cơ bản của laravel
Bundles : Ở laravel phiên bản 3.x, cung cấp một hệ thống đóng gói các
module, với rất nhiều tính năng đi kèm.
Composer : Ở laravel phiên bản 4.x, được sử dụng như một công cụ quản lý
với tính năng như thêm các gói cài đặt, các chức năng PHP phụ trợ cho Laravel có
trong kho Packagist.

15


Eloquent ORM (object relation mapping) : ánh xạ các đối tượng và quan hệ
cơ sở dữ liệu, cung cấp các phương thức nội bộ để thực thi đồng thời cũng bổ sung
các tính năng hạn chế về mối quan hệ giữa các đối tượng cơ sở dữ liệu. Eloquent
ORM trình bày các bảng trong cơ sở dữ liệu dưới dạng các lớp, cung cấp thêm lựa
chọn truy cập cơ sở dữ liệu trực tiếp mới mẻ hơn, chuyên nghiệp hơn.
Application logic : Là một phần của phát triển ứng dụng, được sử dụng bởi
bộ điều khiển controllers.
Routes : Định nghĩa mối quan hệ giữa các đường dẫn (url), các liên kết
(link) . Khi một liên kết được tạo ra bằng cách sử dụng tên của routes, thì một định
danh liên kết thống nhất sẽ được tạo ra bởi laravel.
Restful Controller : cung cấp các tùy chọn để tách các logic phía sau các
request HTTP POST, GET
Class auto loading : cung cấp việc tải tự động các class trong PHP, mà
không cần include các class vào. Tùy thuộc vào yêu cầu các class cần thiết sẽ được
nạp vào, hạn chế các class không cần thiết.
View : chứa các mã html, hiển thị dữ liệu được chỉ định bởi controller
Migrations : cung cấp một hệ thống kiểm soát các phiên bản lược đồ cơ sở
dữ liệu (database cheme), làm cho web ứng dụng có khả năng tương tác phù

hợp những thay đổi logic, các đoạn mã code của ứng dụng và những thay đổi cần
thiết trong việc bố trí cơ sở dữ liệu, triển khai nới lỏng và cập nhật các ứng dụng.
Unit Testing : đóng một vai trò quan trọng trong Laravel, Unit testting chứa
rất nhiều các hệ thống unit testing, giúp phát hiện và ngăn chặn lỗi trong khuôn khổ
nhất định. Unit Testing có thể được chạy thông qua tiện ích command-line.
Automatic pagination : Tính năng tự động phân trang được tích hợp vào
Laravel giúp đơn giản hóa các nhiệm vụ thực hiện phân trang so với các phương
pháp thông thường
1.5 Làm việc với laravel
1.5.1 Route trong laravel
Route dịch ra có nghĩa là tuyến đường, nghe chẳng có tý gì liên quan đến lập
trình nhưng ta có thể hiểu rằng route nó nằm vai trò chỉ đường cho yêu cầu (request)

16


đi đến đâu. Ta có thể hiểu nôm na như sau: khi index.php nhận được request từ
người dùng, nó sẽ đưa request này cho route, từ route sẽ chỉ dẫn tiếp cho request
này đi đến đâu hoặc cũng có thể trả lời ngay tại route.
Ví dụ khi người dùng truy cập vào website với đường dẫn
là domain.com/news, thì lúc này Route sẽ nhận được một phần trong URL
là /news và nó sẽ xử lý request đó gọi đến Controller News hoặc là một thao tác
khác (xử lý thế nào thì tùy vào coder). Đặc biệt hơn các Framework trước đây như
Codeigniter là trong Laravel Route có rất nhiều loại khác nhau như Route dành cho
phương thức POST, Route dành cho phương thức GET ở cùng một URL.
Hầu hết các route của laravel định nghĩa trong file app/routes.php. Và đây
là danh sách các loại Route bao gồm các loại cơ bản và thường được sử dụng sau:
Route::get phương thức GET
Route::post phương thức POST
Route::match kết hợp nhiều phương thức

Route::any nhận tất cả các phương thức
Route::filte tạo ra bộ lọc nhằm mục đích nào đó
Route::group gom các route lại với nhau thành một nhóm
Route::controller gọi đến controller tương ứng
Route::resource sử dụng với resource controller
1.5.1.1 Sử dụng route
1.5.1.1a Sử dụng route::get
Route này sẽ tiếp nhận các request với phương thức GET, cách sử dụng
route này khá đơn giản:
Cú pháp:
Route::get($uri, $action);
Giả sử ta cần viết Route cho URL http://tênmiềnảocủabạn/demo với phương
thức GET thì ta thêm đoạn code như sau:
Route::get('/demo',function(){
return 'Đây là demo đầu tiên';
});

17


Khi action là một mảng
Có 2 tham số thường được sử dụng trong mảng là name, và uses, ngoài ra
bạn còn có thể sử dụng filter trong này. Trong đó name là tên của route mình sẽ đặt,
còn uses sẽ gọi đến phương thức của Controller nào đó
Cú pháp
Route::get($uri,$array);
Bạn mở file routes.php và thêm
Route::get('/array',['name'=>'get.array','uses'=>'HomeController@showWelc
ome']);
Bạn truy cập vào đường dẫn: http://tênmiềnảocủabạn/array và sẽ thấy hiện ra

một giao diện không khác gì khi bạn chạy http://tênmiềnảocủabạn/ đúng không
nào. Tại sao lại vậy? Trước hết bạn nhìn vào đoạn code trên sẽ thấy
HomeController và thắc mắc ở đâu ra cái quái này vậy. Câu trả lời là đó là
controller mặc định có sẵn khi cài đặt laravel, bạn có thể xem controller này tại
file app/controllers/HomeController.php. Khi route này được kích hoạt nó sẽ gọi
đến phương thức showWelcome của HomeController và để controller này xử lý
việc còn lại.
1.5.1.1b Route:post
Route này tiếp nhận các request với phương thức post, các sử dụng và cú
pháp không khác gì với Route::get().
Cú pháp:
Route::post($uri, $action);
Ta nên sử dụng phương thức này khi có thao tác thay đổi cơ sở dữ liệu
1.5.1.1c Route::match
Ngoài các method POST và GET phổ biến trong laravel còn có thêm PUT,
PATCH, DELETE vậy nên sinh ra Route này.
Cú pháp:
Route::match($methods, $uri, $action);
Bạn có thể mở file routes.php và thêm vào
Route::match(['GET', 'POST','PUT'],'/match',function(){

18


return 'match route';
});
1.5.1.1d Route:any
Cú pháp và cách sử dụng của loại route này không khác Route::get() là
mấy, chỉ có điều route này nhận request với tất cả các method như: POST, GET,
DELETE, ...

Cú pháp
Route::any($uri, $action);
1.5.2 Controller trong laravel
1.5.2.1 Tạo controller
Tất cả controller trong laravel được chứa trong thư mục app/controllers và
việc tạo tên file, đặt tên controller cũng phải tuân theo nguyên tắc của nó như sau:
Trước tiên tôi muốn giới thiệu với các bạn lớp Controller của Laravel, đây là
một lớp xử lý controller chính của Laravel nên tất cả các Controller mới phải thừa
kế (extends) từ lớp này.
Nếu bạn muốn kế thừa từ một Controller khác thì lớp đó phải kế thừa từ lớp
Controller của Laravel . Lúc này Controller mới tạo sẽ extends từ lớp Controller
khác đó.
Tên Controller phải trùng với tên File. Ví dụ bạn tạo Controller
tên DemoController thì file phải tên là DemoController.php
Tạo Controller kế thừa trực tiếp từ Controller trong Laravel
Bước 1: Bạn tạo file DemoController.php nằm trong thư mục app/controllers
Bước 2: Bạn viết code tạo Controller trong file DemoController.php như sau:
class DemoController extends Controller{
}
Tạo Controller kế thừa từ một Controller khác
Bây giờ ta sẽ tạo một ExtController và DemoController, DemoController sẽ
kế thừa từ ExtController.

19


Bước 1: Tạo ExtController, bạn tạo file ExtController.php nằm trong
folder app/controllers với nội dung như sau:
class ExtController extends Controller{

}
Bước 2: Tạo DemoController, bạn tạo file DemoController.php nằm trong
folder app/controllers với nội dung như sau:
1.4.2.2 Tạo action controller
Khi làm việc với Route:Controller thì bạn chú ý việc đặt tên action phải tuân
theo quy tắc methodUri như sau:
method là post, get, ... và viết thường.
Uri: Chữ cái đầu tiên của Uri sẽ bắt buộc viết in hoa, cứ 1 chữ in hoa sẽ được
tính là 1 đoạn uri được phân cách bởi dấu –
Khi làm việc với Route:resource thì controller laravel hỗ trợ 8 action: index,
create, store, show, edit, update, destroynhưng trong controller không nhất thiết
phải tạo đủ 8 action này.
Truyền tham số vào action
Tên tham số trong route đặt trong cặp thẻ {}, ví dụ {id}
Trong action sẽ nhận tham số tương ứng. Ví dụ ta có route là '/chitiet-{id}{title}' thì trong action sẽ nhận hai tham số tương ứng là nameAction($id, $title)
Ví dụ:
Route::get('/chitiet-{id}','NewsController@detail');
1.5.3 View trong laravel
Tất cả view của Laravel sẽ mặc định lưu trong resources/views . Ví dụ đơn
giản về một file view như sau:
<!-- View stored in resources/views/greeting.php -->

<html>
<body>

Hello, <?php echo $name; ?>


</body>

20



</html>
Khi file đã được lưu tại resources/views/greetings.php , bạn có thể sử
dụng bằng cách gọi hàm view() để hiển thị:
Route::get('/', function ()

{

return view('greeting', ['name' => 'James']);
});
Như bạn thấy, hàm view() nhận vào hai tham số. Tham số thứ nhất chính là
tên của view, bạn chỉ cần gọi tên, không cần thêm vào đuôi “.php”. Tham số thứ hai
là một mảng để truyền dữ liệu đã “xử lý” vào view; nó là một mảng, với key là tên
của biến sẽ sử dụng ở view và value là giá trị của biến đó. Như ví dụ trên, biến
$name ở view được gán giá trị “James” ở route.
Dĩ nhiên bạn cũng có thể lưu file view và các thư mục con bên trong
resources/views resources/views, ví dụ, nếu bạn lưu view tại resources/views/a
dmin/profile.php, bạn có thể sử dụng view bằng cách:
return view('admin.profile', $data);
Truyền dữ liệu vào view
Như đã nói ở trên, tham số thứ hai của hàm view() nhận vào một mảng với
key và value, bạn có thể thêm vào mảng bao nhiêu cặp key=>value tùy ý để truyền
dữ liệu từ route/controller sang view:
return view('greetings', [
'name' => 'Victoria',
'job'=>'Developer,
'more_data'=> $data
]);
Chia sẻ dữ liệu với tất cả các view
Đôi khi, bạn cần chia sẻ một thông tin cho tất cả các view sẽ hiển thị trên
ứng dụng, ví dụ: hiển thị thông tin user đã đăng nhập lên thanh trạng thái của các

trang backend chẳng hạn. Bạn sẽ không muốn việc lặp đi lặp lại việc insert data
trong hàm view() đâu. Thay vào đó, bạn có thể dùng hàm share() , gọi nó trong
hàm boot() của một Laravel service provider bất kỳ. Với kiến thức hiện tại, có thể

21


bạn chưa hiểu “service provider” là gì? Hãy tạm chấp nhận và gọi hàmshare() trong
file app/Providers/AppServiceProvider.php :
namespace App\Providers;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->share('key', 'value');
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
//

}
}
1.5.4 Model trong laravel
Model là cách gọi chung cho các object chịu trách nhiệm quản lý kết nối và
thao tác dữ liệu trên hệ quản trị cơ sở dữ liệu. Sử dụng model sẽ giúp chúng ta:
Làm “mờ” đi tính chuyên biệt phía sau của các hệ quản trị cơ sở dữ liệu khác
nhau

22


Tập trung vào code xử lý business và quên đi các câu lệnh thao tác trên các
HQT CSDL
Đóng gói – trừu tượng hóa dữ liệu các thực thể vào ứng dụng
Đặc tính cơ bản nhất và quan trọng nhất của Eloquent model đó là tự
động mapping thuộc tính của model với các cột trong database. Điều này giúp bạn
đỡ mất rất nhiều thời gian trong việc khai báo model cũng làm cho cách sử dụng tên
thống nhất từ model qua table. Khi cần thao tác dữ liệu, bạn chỉ cần gọi chính xác
tên cột trong bảng là có thể đọc/ghi được dữ liệu vào thuộc tính tương ứng.
Cách tạo model
Laravel sử dụng thư viện Eloquent làm lớp giao tiếp model, do đó khi đọc
hay tìm kiếm tài liệu, “eloquent” chính là từ khóa của các bạn.
Dùng lệnh artisan
php artisan make:model Person --migration
Model created successfully.
Created Migration: 2017_02_21_173117_create_people_table
Truy vấn dữ liệu
Lấy tất cả record
Sử dụng hàm All(). Hàm này lấy tất cả các dòng trong bảng. Trả ra luôn là
một collection (một lớp bao Array hỗ trợ Laravel xử lý mảng thông minh hơn. Cách

dùng tương tự array, có thể dùng trong foreach). Có thể rỗng hoặc có dữ liệu.
Lấy dữ liệu theo điều kiện
Bạn sẽ phải quên đi việc viết truy vấn bằng SQL, tuy nhiên cách viết truy
vấn bằng Eloquent khá tương đồng với viết SQL:
where() : sử dụng where như trong SQL để yêu cầu điều kiện truy vấn. Hàm
nhận 2 hoặc 3 tham số. Với 2 tham số, đầu tiên là tên cột, thứ hai là giá trị cần so
sánh. Với 3 tham số, thứ 2 là toán tử so sánh, chấp nhận tất cả toán tử so sánh trong
SQL như >,<,>=,<=,= tham số thứ 3 là giá trị cần so sánh.
AND / OR : để thực hiện gom nhiều điều kiện, bạn chỉ cần xâu chuỗi liên tục
các câu lệnh where() bằng dấu ->

23


1.5.5 Sử dụng Blade Template
Blade rất đơn giản, nhưng lại là một templating engine đầy mạnh mẽ!
Không giống những PHP templating engine phổ biến khác, Blade không giới hạn
chúng ta sử dụng code PHP trong views. Tất cả các file Blade sẽ được dịch thành
file code PHP và cache cho đến khi file Blade bị thay đổi, điều đó cũng có nghĩa là
Blade tự làm tất cả những việc cần thiết để có thể chạy views cho ứng dụng
Template engine có tác dụng giúp sạch đi những đoạn code PHP nằm trong
View nên tách biệt hoàn toàn giữa người cắt CSS và người code PHP. Hiện nay có
khá nhiều template engine như Smarty, tuy nhiên việc sử dụng nó đang là một câu
hỏi lớn vì tốc độ xử lý của ứng dụng sẽ trở nên chậm hơn. Lý do mỗi khi render qua
view thì PHP sẽ phải duyệt toàn bộ nội dung của view và timf những biểu thức
của engine và gán dữ liệu vào.
Template engine Blade đây là một engine khá đơn giản nhưng đầy mạnh mẽ.
Template engine này được tích hợp sẵn bên trong laravel và tất cả blade template
engine đều có phần mở rộng là .blade.php.
Tạo một template

Tất cả các BTE đều có phần mở rộng là .blade.php và nằm trong thư
mục app/views. Vậy nên việc tạo mới BTE rất đơn giản. Ví dụ để tạo BTE tê
là demo thì bạn sẽ tạo một file demo.blade.php ở trong thư mục app/views và nhập
vào nội dung như sau:
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<title>Freetuts.net</title>
</head>
<body>

Sử dụng Blade template engine trong Laravel


</body>
</html>

24


Các cú pháp sử dụng trong Blade template
Sử dụng {{}} để echo giá trị
Sử dụng or để xuất giá trị mặc định
Sử dụng @ trước các câu lệnh vòng lặp
Mở rộng,ghi đè và sub-view với blade
Chèn sub-view
Để chèn sub-view ta dùng cú pháp:
@include($string_view_name, $array_data)
Mở rộng và ghi đè
Tạo file app/views/layouts/master.blade.php như sau:
<!DOCTYPE html>
<html lang="vi">

<head>
<meta charset="UTF-8">
<title>
@section('title')
Freetuts.net
@show
</title>
</head>
<body>
<div class="container">
@yield('content')
</div>
</body>
</html>
Với file master.blade.php ở trên thì ta có thể mở rộng và ghi đè nó ở hai
phần @section('title') và @yield('content').
Bạn tạo file File app/views/home.blade.php với nội dung như sau:
@extends('layouts.master')

25


×