lOMoARcPSD| 58797173
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:
21
20110347
Lớp:
CCQ2011D
GVHD: Chu Thị
Mai
22
lOMoARcPSD| 58797173
LỜI MỞ ĐẦU
PHẦN 1. MỞ ĐẦU
1. Lý do chọn đề tài
Laravel một web application framework của PHP. Được đánh giá 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 thể bắt đầu project của mình
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 Laravel đưa vào những 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 ơng tự cũng tăng lên. Để đáp ứng nhu cầu mua hàng
ngày ng ng này, một số ứng dụng đã sẵn sàng hiện có sẵn trên thị trường 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. 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 khảo sát qui trình bán hàng qua mạng để 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 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ử.
lOMoARcPSD| 58797173
NHẬN XẾT CỦA GIÁO VIÊN
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
ngày…,tháng…năm 2022
Giáo viên hướng dẫn
(Kí tên)
lOMoARcPSD| 58797173
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
lOMoARcPSD| 58797173
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
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 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. ớng phát triển...............................................................................................38
CHƯƠNG 5 : DANH MỤC CÁC TÀI LIỆU THAM KHẢO...................................39
lOMoARcPSD| 58797173
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?
rất nhiều do khác nhau để các lập trình viên sử dụng PHP Framework, nhưng
1 trong những do chính vẫn khả năng giúp các lập trình viền ng tốc quá trình
phát triển ứng dụng. Việc sử dụng lại các lệnh giống nhau trong nhiều project sẽ
giúp các bạn tiết kiệm được thời gian 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, thế, các lập
trình viên thể tận dụng được thời gian để phát triển các ứng dụng thực tế, hơn
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?
hơn 20 Framework nguồn mở PHP khác nhau, nhưng trong số đó thì
Laravel Framework 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àng dễ hiểu 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ỉ người mới bắt đầu
"chập chửng" tìm hiểu PHP Framework tviệc tiếp cận Laravel Framework không
phải vấn đề khó khăn gì. Ưu điểm của là: Autoload theo namespace, c lệnh
tương tác với sdữ liệu cực kỳ ngắn gọn thân thiện, phân trang trong laravel
cực kỳ đơn giản, việc quản 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 share trên github
còn rất nhiều ưu điểm khác đang đợi các bạn khám phá… .
lOMoARcPSD| 58797173
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, ...
lOMoARcPSD| 58797173
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.
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:
composer create-project --prefer-dist laravel/laravel: ten_project
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
composer create-project --prefer-dist laravel/laravel: ^8 laravel8
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.
lOMoARcPSD| 58797173
Tớc hết phải cài laravel/installer package bằng lệnh sau
composer global require laravel/installer
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:
laravel new folder_name
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 chạy câu lệnh. dụ
mình truy cập vào thư mục laravel8 bật cmder và gõ lệnh
php artisan serve
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.phpthêm nội dung sao vào cuối file:
Route::get(‘/dang-nhap’,function()
{ echo ‘Đây là trang đăng nhập’;
});
- các bạn th 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ử 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 đ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. pháp
đơn giản nhất của 1 định tuyến đó là:
lOMoARcPSD| 58797173
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.
- 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 thư mục dự án). Khi 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ònthể 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 dụ trên nghĩa khi chúng ta chạy link san-pham lúc 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ố} trong hàm callback chúng ta coi
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;
});
lOMoARcPSD| 58797173
Tiếp theo bạn truy cập vào đường link
localhost/kienthuc24h/sanpham/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){
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 n 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”));
lOMoARcPSD| 58797173
Với đoạn code trên nh đã thêm vào khóa before chỉ tới checklogin. Chính
filter ta đã thiết lập trước đó, đẩy 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 sẽ
kiểm tra Filter checklogin trước.
- Với bất kỳ link nào đó mà bạn muốn kiểm tra đăng nhập thì chỉ cần sử
dụng “before”=>”checklogin” là được.
- Filter trong Laravel Framework còn cho phép chúng ta truyền giá trị vào
dựa vào cú pháp sau:
Route::filter(‘Tên filter’, function($route, $request,$value){
// code xử lý, kiểm tra dữ liệu
});
+ 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 dụ này các bạn thấy được ý nghĩa sức mạnh của filter
trong thực tế phải không nào. Với filter ta thể tối giản code mức cao nhất 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));
lOMoARcPSD| 58797173
$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 y sẽ sử dụng controller (ProductController) nào action
(view) nào.
+ Thư viện URL, sử dụng phương thức route với cú pháp sau:
URL::route(“tên route”, array(‘chứa đối số’));
Sau khi chạy đoạn code trên chúng ta sẽ có $url=/san-pham/nokia520/1.
- Tiếp đến ta xây dựng 1 controller với nội dung sau:
<?php
class ProductController extends BaseController{
public function view($name,$id)
{ echo ‘Bạn đang xem sản phẩm’.$name.’có ID =
’.$id; }
} 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 thể nhóm các Route cần thông
qua bộ lọc định tuyến nào đó (Filter). Như với dụ trên chúng ta Filter
checklogin, giả sử chúng ta 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”));
lOMoARcPSD| 58797173
});
+ Như vậy 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.
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 đều tiền tố
(Prefix) admin phải không nào. Lúc này chúng ta hoàn toàn thể cho 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 t mục
(app/view).
- Để sử dụng view ta 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>
lOMoARcPSD| 58797173
</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 tsao. Bạn có nhiều cách để làm điều đó.
Cách 1: Sử dụng đối số
Route::get("name2",function(){
$data['name']= "Bui Van Tinh";
return View::make("hoten",$data); });
Với cách này bạn đang truyền sang view hoten.php một đối số 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'); });
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ử dữ
liệungay bên trong Route nhưng đối với những thao tác phức tạp 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:
lOMoARcPSD| 58797173
1. Tên file trùng với tên Class.
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
- Tớ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 sgọi tới
controller HocphpController phương thức(action) 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 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');
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 $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 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í dụ
lOMoARcPSD| 58797173
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:
+ Tớc các action phải có các tiền tố 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 thể xử một resourceful route tới controller:
Route::resource('hocphp', 'HocphpController');
Việc lập route đơn này sẽ xử 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 *
* @var Hocphp
ới đây 1 dụ đơn giản trong controller HocphpController:
lOMoARcPSD| 58797173
*/ 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)
{
}
/**
lOMoARcPSD| 58797173
* 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 dữ liệu(hiển thị ,thêm, sửa, xóa) các bạn
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,cho phép chúng ta thể kiểm tra trước khi truy
lOMoARcPSD| 58797173
cập vào đường dẫn đó.Như vậy các bạn hoàn toàn thsử dụng filters để lọc dữ
liệu với Controller.Bạn có thể khai báo trên file route như sau:
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 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
}
}
}

Preview text:

Hello, <?php echo $name; ?> lOMoAR cPSD| 58797173