Quản lý cấu hình: Một ứng dụng web được thiết kế trong Laravel sẽ chạy trên các môi trường khác nhau, điều đó có nghĩa là sẽ có sự thay đổiliên tục trong cấu hình của nó.. Bài 3: Cấu t
Trang 1Bài 1: Giới thiệu
Laravel là một framework PHP mã nguồn mở, mạnh mẽ và dễ hiểu Nó tuân theo một mẫu thiết kế model-view-controller Laravel sử dụng lại các
thành phần hiện có của các khung khác nhau để giúp tạo ra một ứng dụng web
Do đó, ứng dụng web được thiết kế có cấu trúc và thực dụng hơn
Laravel cung cấp một tập hợp các chức năng phong phú kết hợp các tínhnăng cơ bản của các framework PHP như CodeIgniter, Yii và các ngôn ngữ lậptrình khác như Ruby on Rails Laravel có một bộ tính năng rất phong phú sẽgiúp tăng tốc độ phát triển web
Nếu bạn đã quen thuộc với Core PHP và Advanced PHP, Laravel sẽ
giúp công việc của bạn dễ dàng hơn Nó tiết kiệm rất nhiều thời gian nếu bạnđang có kế hoạch phát triển một trang web từ đầu Hơn nữa, một trang webđược xây dựng trong Laravel là an toàn và ngăn chặn một số cuộc tấn côngweb
Ưu điểm của Laravel
Khi bạn đang thiết kế một ứng dụng web dựa trên Laravel, nó cung cấpcho bạn những lợi thế sau:
Ứng dụng web trở nên có khả năng mở rộng hơn, nhờ vào frameworkLaravel
Tiết kiệm đáng kể thời gian trong việc thiết kế ứng dụng web, vìLaravel sử dụng lại các thành phần từ framework khác trong việc pháttriển ứng dụng web
Nó bao gồm các không gian tên và giao diện, do đó hữu ích trong việc
tổ chức và quản lý tài nguyên
Composer
Composer là một công cụ bao gồm tất cả các dependencies và thư viện.
Nó cho phép người dùng tạo một dự án liên quan đến framework đã đề cập (vídụ: những dự án được sử dụng trong cài đặt Laravel) Thư viện của bên thứ ba
có thể được cài đặt dễ dàng với sự trợ giúp của composer
Trang 2Tất cả các dependencies được ghi chú trong tệp composer.json được đặt
trong thư mục nguồn
Artisan
Giao diện dòng lệnh được sử dụng trong Laravel được gọi là Artisan Nó
bao gồm một tập hợp các lệnh hỗ trợ xây dựng một ứng dụng web Các lệnh nàyđược kết hợp từ framework Symphony
Các tính năng của Laravel
Laravel cung cấp các tính năng chính sau đây giúp nó trở thành một lựachọn lý tưởng để thiết kế các ứng dụng web:
Tính mô đun: Laravel cung cấp 20 thư viện và mô-đun tích hợp giúp
tăng cường ứng dụng Mỗi mô-đun được tích hợp với trình quản lý phụthuộc Composer giúp dễ dàng cập nhật
Khả năng kiểm tra: Laravel bao gồm các tính năng và trợ giúp giúp
kiểm tra thông qua các trường hợp thử nghiệm khác nhau Tính năng nàygiúp duy trì mã theo yêu cầu
Định tuyến (Routing): Laravel cung cấp một cách tiếp cận linh hoạt cho người dùng để xác định các routes trong ứng dụng web Định tuyến giúp
mở rộng ứng dụng theo cách tốt hơn và tăng hiệu suất của nó
Quản lý cấu hình: Một ứng dụng web được thiết kế trong Laravel sẽ
chạy trên các môi trường khác nhau, điều đó có nghĩa là sẽ có sự thay đổiliên tục trong cấu hình của nó Laravel cung cấp một cách tiếp cận nhấtquán để xử lý cấu hình một cách hiệu quả
Trình tạo truy vấn và ORM: Laravel kết hợp một trình xây dựng truy
vấn giúp truy vấn cơ sở dữ liệu bằng các phương thức chuỗi đơn giản
khác nhau Nó cung cấp ORM (Object Relative Mapper) và triển khai ActiveRecord được gọi là Eloquent.
Xây dựng lược đồ (Schema Builder): Schema Builder duy trì các định
nghĩa và lược đồ cơ sở dữ liệu trong mã PHP Nó cũng duy trì theo dõicác thay đổi liên quan đến di chuyển cơ sở dữ liệu
Công cụ template: Laravel sử dụng công cụ Blade Template, một ngôn
ngữ template được sử dụng để thiết kế các khối và bố cục phân cấp vớicác khối được xác định trước bao gồm nội dung động
E-mail: Laravel bao gồm một lớp mail giúp gửi thư có nội dung phong
phú và tệp đính kèm từ ứng dụng web
Trang 3 Xác thực: Xác thực người dùng là một tính năng phổ biến trong các ứng
dụng web Laravel giảm bớt việc thiết kế xác thực vì nó bao gồm các tính
năng như đăng ký, quên mật khẩu và gửi lời nhắc mật khẩu.
Redis: Laravel sử dụng Redis để kết nối với một phiên hiện có và bộ
đệm cho mục đích chung Redis tương tác với phiên trực tiếp
Hàng đợi: Laravel bao gồm các dịch vụ xếp hàng như gửi email số lượng lớn hoặc một công việc Cron được chỉ định Các hàng đợi này giúp hoàn
thành các nhiệm vụ một cách dễ dàng hơn mà không phải chờ đợi nhiệm
vụ trước đó được hoàn thành
Event và Command Bus: Laravel 5.1 bao gồm Command Bus giúp
thực thi các lệnh và gửi các sự kiện một cách đơn giản Các lệnh trongLaravel hoạt động theo vòng đời của ứng dụng
Trang 4Bài 2: Cài đặt Laravel
Để quản lý các dependencies, Laravel sử dụng composer Hãy chắc chắn rằng bạn đã cài đặt composer trên hệ thống của mình trước khi cài đặt Laravel.
Trong bài này, bạn sẽ được hướng dẫn quá trình cài đặt của Laravel
Bạn sẽ phải làm theo các bước được đưa ra dưới đây để cài đặt Laravelvào hệ thống:
Bước 1 - Truy cập URL sau và tải xuống trình soạn thảo để cài đặt nó trên hệ
mục htdocs, mở command và nhập lệnh sau:
composer create-project prefer-dist laravel/laravel test
Đầu ra của lệnh như dưới đây:
Trang 5Framework Laravel có thể được cài đặt trực tiếp với nhánh phát triển (develop)bao gồm framework mới nhất.
Bước 4 - Lệnh trên sẽ cài đặt Laravel trong thư mục hiện tại Bắt đầu dịch vụ
Laravel bằng cách thực hiện lệnh sau
php artisan serve
Bước 5 - Sau khi thực hiện lệnh trên, bạn sẽ thấy một màn hình như hình bên
dưới:
Trang 6Bước 6 - Sao chép URL được gạch chân màu xám trong ảnh chụp màn hình ở
trên và mở URL đó trong trình duyệt Nếu bạn thấy màn hình sau, nó có nghĩa
là Laravel đã được cài đặt thành công
Trang 7Bài 3: Cấu trúc ứng dụng Laravel
Cấu trúc ứng dụng trong Laravel về cơ bản là cấu trúc của các thư mục,thư mục con và tệp có trong một dự án Khi chúng ta tạo một dự án trongLaravel, chúng ta có cấu trúc ứng dụng như trong hình ở đây
Ảnh chụp nhanh được hiển thị ở đây đề cập đến thư mục gốc của Laravel,
cụ thể là dự án laravel Nó bao gồm các thư mục con và tập tin khác nhau Việcphân tích các thư mục và tệp, cùng với các chức năng của chúng được đưa radưới đây:
Trang 8Nó là thư mục ứng dụng (application) và bao gồm toàn bộ mã nguồn của
dự án Nó chứa các sự kiện (events), ngoại lệ (exception) và khai báo phần mềmtrung gian (middleware) Thư mục ứng dụng bao gồm các thư mục phụ khácnhau như được giải thích bên dưới:
Console
Console chứa tệp Kernel.php định nghĩa các câu lệnh trên artisan
Exceptions
Thư mục này chứa tất cả các phương thức cần thiết để xử lý các trường
hợp ngoại lệ Nó cũng chứa tập tin handle.php xử lý tất cả các ngoại lệ.
Http
Thư mục http có các thư mục con cho controllers, middleware
Thư mục con Middleware bao gồm cơ chế phần mềm trung gian, bao
gồm cơ chế lọc và giao tiếp giữa response và request
Thư mục con controllers chứa các controller của project
Providers
Thư mục này bao gồm tất cả các Providers dịch vụ cần thiết để đăng kýcác sự kiện cho các máy chủ core và cấu hình ứng dụng Laravel
Bootstrap
Thư mục này chứa tất cả các tập lệnh bootstrap của ứng dụng Nó chứa
một thư mục con cụ thể là cache, bao gồm tất cả các tệp được liên kết để lưu trữ ứng dụng web Bạn cũng có thể tìm thấy tệp app.php, nó khởi tạo các tập lệnh
cần thiết cho bootstrap
Config
Thư mục config bao gồm các cấu hình khác nhau và các tham số liên
quan cần thiết cho hoạt động trơn tru của ứng dụng Laravel Các tập tin khácnhau trong thư mục config được hiển thị trong hình ảnh dưới đây Các tên filehoạt động theo chức năng liên quan đến chúng
Trang 9Như tên cho thấy, thư mục này bao gồm các tham số khác nhau cho cácchức năng cơ sở dữ liệu Nó bao gồm ba thư mục con như được đưa ra dướiđây:
Seeds - Chứa các lớp được sử dụng để tạo dữ liệu thêm vào CSDL
Migrations - Thư mục này chứa các file tạo và chỉnh sửa dữ liệu
Factories - Thư mục này được sử dụng để tạo số lượng lớn các bản
ghi dữ liệu
Public
Đây là thư mục gốc giúp khởi tạo ứng dụng Laravel Nó bao gồm các tệp
và thư mục sau:
.htaccess - Tập tin này cung cấp cấu hình máy chủ.
javascript và css - Những tệp này được coi là assets được sử dụng để
chứa các file js và css
index.php - Tập tin này là cần thiết để khởi tạo một ứng dụng web.
Trang 10Thư mục Resources chứa các tệp giúp cải thiện ứng dụng web Các thưmục con có trong thư mục này và mục đích của chúng được giải thích bên dưới:
js - Thư mục các file javascript cho ứng dụng.
scss - Thư mục chứa các file css cho ứng dụng.
lang - Thư mục này bao gồm cấu hình vị trí địa lý hoặc ngôn ngữ.
views - Views là các tệp HTML hoặc templates tương tác với người
dùng và đóng vai trò chính trong kiến trúc MVC
Quan sát rằng thư mục Resources sẽ được làm phẳng thay vì có một thưmục assets
routes
Thư mục routes, chứa tất cả các điều khiển route (đường dẫn) trongproject Chứa các file route sẵn có: web.php, channels.php, api.php, vàconsole.php
Trang 11Đây là thư mục lưu trữ tất cả các bản ghi và các tệp cần thiết khi dự ánLaravel đang chạy Các thư mục con có trong thư mục này và mục đích củachúng được đưa ra dưới đây:
app - Thư mục này chứa các tệp được gọi liên tiếp.
framework - Nó chứa các phiên, bộ đệm và các khung nhìn (views)
và được gọi thường xuyên
Logs - Tất cả các trường hợp ngoại lệ và nhật ký lỗi được theo dõi
trong thư mục con này
Ngoài các tệp được đề cập ở trên, Laravel còn bao gồm một số tệp khácđóng vai trò chính trong các chức năng khác nhau như cấu hình GitHub, các gói
và các thư viện của bên thứ ba
Các tập tin trong cấu trúc ứng dụng được hiển thị bên dưới:
Trang 12Bài 4: Cấu hình Laravel
Trong bài trước, chúng ta đã biết các tệp cấu hình cơ bản của Laravelđược đặt trong thư mục cấu hình Trong bài này, chúng ta hãy thảo luận về cácthể loại có trong cấu hình
Cấu hình môi trường
Các biến môi trường là những biến cung cấp danh sách các dịch vụ web
cho ứng dụng web Tất cả các biến môi trường được khai báo trong tệp env bao
gồm các tham số cần thiết để khởi tạo cấu hình
Theo mặc định, tệp env bao gồm các tham số sau:
APP_ENV = local
APP_DEBUG = true
APP_KEY = base64:ZPt2wmKE/X4eEhrzJU6XX4R93rCwYG8E2f8QUA7kGK8 =
APP_URL = http://localhost
Trang 13 Không nên cố định tệp env đối với nguồn ứng dụng, vì mỗi nhà phát
triển hoặc người dùng có một số cấu hình môi trường riêng cho ứngdụng web
Đối với các tùy chọn sao lưu, nhóm phát triển nên sử dụng tệp
.env.example, nó sẽ chứa các cấu hình mặc định.
Truy xuất các biến môi trường
Tất cả các biến môi trường được khai báo trong tệp env có thể được truy cập bởi các hàm env-helper sẽ gọi tham số tương ứng Các biến này cũng được liệt kê thành biến toàn cục $ _ENV mỗi khi ứng dụng nhận được yêu cầu từ
phía người dùng Bạn có thể truy cập biến môi trường như hình bên dưới
-'env' => env('APP_ENV', 'production'),
Các hàm env-helper được gọi trong tệp app.php có trong thư mục cấu
hình Ví dụ đã cho ở trên đang gọi tham số cục bộ cơ bản
Truy cập các giá trị cấu hình
Trang 14Bạn có thể dễ dàng truy cập các giá trị cấu hình ở bất cứ đâu trong ứngdụng bằng chức năng trợ giúp cấu hình toàn cục Trong trường hợp nếu các giátrị cấu hình không được khởi tạo, các giá trị mặc định được trả về.
Ví dụ: để đặt múi giờ mặc định, đoạn mã sau được sử dụng
Đôi khi bạn có thể cần cập nhật một số giá trị cấu hình hoặc thực hiện bảo
trì trên trang web của mình Trong những trường hợp như vậy, giữ nó trong chế
độ bảo trì Các ứng dụng web như vậy được giữ trong chế độ bảo trì thông qua một ngoại lệ có tên MaintenanceModeException với mã trạng thái 503.
Bạn có thể kích hoạt chế độ bảo trì trên ứng dụng web Laravel của mìnhbằng lệnh sau:
php artisan down
Trang 15Ảnh chụp màn hình sau đây cho thấy ứng dụng web sẽ hiển thị khi nó bịngừng hoạt động
Khi bạn hoàn thành công việc cập nhật và bảo trì khác, bạn có thể tắt chế
độ bảo trì trên ứng dụng web của mình bằng lệnh sau
php artisan up
Trang 16Bây giờ, bạn có thể thấy rằng trang web hiển thị đầu ra với chức năngphù hợp và chỉ ra rằng chế độ bảo trì hiện đã bị xóa như hiển thị bên dưới
Trang 17Bài 5: Định tuyến (Routing)
Trong Laravel, tất cả các yêu cầu (request) được ánh xạ với sự trợ giúpcủa các routes Định tuyến cơ bản định tuyến yêu cầu đến các controller liênquan Bài này thảo luận về định tuyến trong Laravel
Định tuyến trong Laravel bao gồm các loại sau:
Định tuyến cơ bản
Định tuyến các tham số
Các định tuyến đặt tên
Định tuyến cơ bản
Tất cả các định tuyến ứng dụng được đăng ký trong tệp routes/web.php.
Tệp này thông báo cho Laravel về các URI mà nó sẽ phản hồi và controllerđược liên kết sẽ cung cấp cho nó một lời gọi cụ thể Định tuyến mẫu cho trang
welcome có thể được hiển thị trong ảnh chụp màn hình được cung cấp bên
Trang 18resources/view/welcome.blade.php
<!DOCTYPEhtml>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<metacharset="utf-8">
<metaname="viewport"content="width=device-width, initial-scale=1"> <title>Laravel</title>
Trang 19<divclass="flex-center position-ref full-height">
<divclass="content">
<divclass="title m-b-md">
Trang 20Bây giờ chúng ta cúng tìm hiểu các bước liên quan đến cơ chế định tuyếnmột cách chi tiết:
Bước 1 - Đầu tiên, chúng ta nên thực thi URL gốc của ứng dụng.
Bước 2 - Bây giờ, URL được thực thi phải khớp với phương thức thích hợp trong tệp web.php Trong trường hợp hiện tại, nó phải phù hợp với phương thức
và URL gốc (’/') Điều này sẽ thực hiện các chức năng liên quan.
Bước 3 - Hàm gọi file template resources/views/welcome.blade.php Tiếp theo, hàm gọi hàm view() với đối số ‘welcome', không sử dụng blade.php.
Nó sẽ tạo ra đầu ra HTML như trong hình bên dưới:
Định tuyến các tham số
Trang 21Đôi khi trong ứng dụng web, bạn có thể cần phải lấy các tham số được
truyền bằng URL Đối với điều này, bạn nên sửa đổi mã trong tập tin web.php.
Bạn có thể nắm bắt các tham số trong tệp web.php theo hai cách như
được thảo luận ở đây:
Các tham số bắt buộc
Các tham số này là những tham số cần được bắt buộc để định tuyến ứngdụng web Ví dụ: để lấy số nhận dạng (ID) người dùng từ URL có thể được thựchiện bằng cách xác định các tham số định tuyến như dưới đây:
Route::get('ID/{id}',function($id) {
echo 'ID: '.$id;
});
Các tham số tùy chọn
Đôi khi các nhà phát triển có thể tạo ra các tham số là tùy chọn và có thể
bao gồm dấu ? sau tên tham số trong URL Điều quan trọng là giữ giá trị mặc
định được đề cập dưới dạng tên tham số Quan sát ví dụ sau đây cho thấy cáchxác định tham số tùy chọn:
Route::get('user/{name?}', function ($name = 'LearnSkill') { return $name;});
Ví dụ trên kiểm tra xem giá trị có khớp với LearnSkill hay không và
định tuyến đến URL được xác định
Các định tuyến đặt tên
Các định tuyến đặt tên cho phép một cách thuận tiện để tạo các routes.Chuỗi các định tuyến có thể được chỉ định bằng cách sử dụng phương thứcname vào định nghĩa routes Đoạn mã sau đây cho thấy một ví dụ để tạo cácroutes được đặt tên bằng controller
Route::get('user/profile', 'UserController@showProfile')->name('profile');
UserController sẽ gọi hàm showProfile với tham số là profile Các tham
số sử dụng phương thức name vào định nghĩa routes.
Trang 22Bài 6: Middleware
Middleware hoạt động như một cầu nối giữa một yêu cầu (request) và
một phản hồi (response) Nó là một loại cơ chế lọc Bài này giải thích cho bạn
cơ chế phần mềm trung gian trong Laravel
Laravel có một middleware để xác minh xem người dùng của ứng dụng
có được xác thực hay không Nếu người dùng được xác thực, nó sẽ chuyểnhướng đến trang chủ, nếu không, nó sẽ chuyển hướng đến trang đăng nhập
Middleware có thể được tạo bằng cách thực hiện lệnh sau:
php artisan make:middleware <tên-middleware>
Thay thế <tên-middleware> bằng tên của middleware của bạn middleware bạn tạo có thể được nhìn thấy trong thư mục app/Http/Middleware.
Ví dụ
Quan sát ví dụ sau để hiểu cơ chế middleware
Bước 1 - Bây giờ chúng ta hãy tạo AgeMiddleware Để tạo nó, chúng ta cần
thực hiện lệnh sau:
php artisan make:middleware AgeMiddleware
Bước 2 - Sau khi thực hiện thành công lệnh, bạn sẽ nhận được output như sau:
Trang 23Bước 3 - AgeMiddleware sẽ được tạo tại app/Http/Middleware Các tập tin
mới được tạo sẽ có mã sau đây đã được tạo cho bạn
và $routeMiddleware Thuộc tính $middleware được sử dụng để đăng ký Global Middleware và thuộc tính $routeMiddleware được sử dụng để đăng
ký route cho middleware cụ thể
Để đăng ký Global Middleware , hãy liệt kê lớp ở cuối thuộc tính
Trang 24];
Ví dụ
Chúng ta đã tạo AgeMiddleware trong ví dụ trước Bây giờ chúng ta có
thể đăng ký nó trong thuộc tính middleware cụ thể Mã cho đăng ký đó đượchiển thị dưới đây
Sau đây là mã cho app/Http/Kernel.php
Trang 25'auth.basic' =>
\Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
];
Các Tham số middleware
Chúng ta cũng có thể truyền tham số với Middleware Ví dụ: nếu ứngdụng của bạn có các vai trò khác nhau như người dùng, quản trị viên, siêu quảntrị viên, v.v và bạn muốn xác thực hành động dựa trên vai trò, điều này có thểđạt được bằng cách chuyển tham số với middleware Middleware mà chúng ta
tạo chứa hàm sau đây và chúng ta có thể truyền đối số sau đối số $next.
return $next($request);
}
Ví dụ
Bước 1 - Tạo RoleMiddleware bằng cách thực hiện lệnh sau:
php artisan make:middleware RoleMiddleware
Bước 2 - Sau khi thực hiện thành công, bạn sẽ nhận được output sau
Trang 26Bước 3 - Thêm mã sau đây vào phương thức xử lý của ứng dụng RoleMiddleware tại app/Http/Middleware/RoleMiddleware.php.
echo "Role: ".$role;
];
Trang 27Bước 5: Thực thi lệnh sau để tạo TestController
php artisan make:controller TestController
Bước 6: Sau khi thực thi thành công bước 5, bạn sẽ nhận được output như sau:
Bước 7: Copy những dòng lệnh sau vào file app/Http/TestController.php
class TestController extends Controller {
public function index() {
echo "<br>Test Controller." ;
Trang 28Terminable Middleware có thể thực hiện một số tác vụ sau khi phản hồi
đã được gửi tới trình duyệt Điều này có thể được thực hiện bằng cách tạo ra
một Middleware với phương thức terminate trong Middleware Terminable Middleware nên được đăng ký với Global Middleware Phương thức terminate
sẽ nhận được hai đối số $request và $response Phương thức terminate có thể
được tạo như hiển thị trong đoạn mã sau
Ví dụ
Bước 1 - Tạo TerminatingMiddleware bằng cách thực hiện lệnh bên dưới.
php artisan make:middleware TerminateMiddleware
Bước 2 - Bước 1 sẽ tạo ra output như sau:
Trang 29Bước 3: Copy đoạn mã sau vào TerminateMiddleware vừa tạo tại app/Http/Middleware/TerminateMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
class TerminateMiddleware {
public function handle($request, Closure $next) {
echo "Executing statements of handle method of TerminateMiddleware." ;
return $next($request);
}
public function terminate($request, $response) {
echo "<br>Executing statements of terminate method of TerminateMiddleware." ;
}
}
Bước 4: Đăng ký TerminateMiddleware tại file app\Http\Kernel.php
Trang 30php artisan make:controller ABCController
Bước 6 − Sau khi thực thi thành công, bạn sẽ nhận được output như sau:
Bước 7: Copy những dòng lệnh sau vào file app/Http/ABCController.php
class ABCController extends Controller {
public function index() {
echo "<br>ABC Controller." ;
Trang 31Bài 7: Request trong Laravel
Trong bài này, bạn sẽ tìm hiểu chi tiết về Requests trong Laravel.
Lấy Request URI
Phương thức "path" của người dùng được sử dụng để lấy URI được yêu cầu Phương thức is được sử dụng để truy xuất URI được yêu cầu khớp với mẫu
cụ thể được chỉ định trong đối số của phương thức Để có được URL đầy đủ,
chúng ta có thể sử dụng phương thức url.
Ví dụ
Trang 32Bước 1 - Thực hiện lệnh dưới đây để tạo controller mới gọi là UriControll.
php artisan make:controller UriController
Bước 2 - Sau khi tạo controller, thêm đoạn mã sau vào tệp app/Http/Controllers/UriController.php.
$pattern = $request->is( 'foo/*' );
echo 'is Method: ' $pattern;
Bước 3 - Thêm dòng sau vào file routes/web.php.
Route::get('/foo/bar','UriController@index');
Trang 33Bước 4 - Truy cập URL sau.
http://localhost:8000/foo/bar
Bước 5 - Đầu ra sẽ xuất hiện như hình ảnh sau đây.
Lấy dữ liệu đầu vào (input)
Các giá trị đầu vào có thể lấy dễ dàng trong Laravel Laravel sẽ nhận giá
trị đầu vào cho cả hai phương thức "post" và "get" giống nhau Có hai cách
chúng ta có thể lấy các giá trị đầu vào
Sử dụng phương thức input()
Sử dụng các thuộc tính của thể hiện Request
Sử dụng phương thức input()
Phương thức input() nhận một đối số (tên của field trong form) Ví dụ:
nếu form chứa field username thì chúng ta có thể truy cập nó theo cách sau
$name = $request->input('username');
Sử dụng các thuộc tính của thể hiện Request
Giống như phương thức input(), chúng ta có thể lấy thuộc tính username
trực tiếp từ thể hiện request
$request->username
Ví dụ
Quan sát ví dụ sau để hiểu thêm về Request
Trang 34Bước 1 - Tạo form Đăng ký, nơi người dùng có thể tự đăng ký và lưu trữ form tại resources/views/register.php.
<form action = "/user/register" method = "post" >
<input type = "hidden" name = "_token" value = " <?php echo csrf_token() ?> " >
<td colspan = "2" align = "center" >
<input type = "submit" value = "Register" />
Bước 2 - Thực hiện lệnh dưới đây để tạo controller UserRegistration.
php artisan make:controller UserRegistration
app/Http/Controllers/UserRegistration.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
Trang 35class UserRegistration extends Controller
{
public function postRegister( Request $request) {
//Nhận field đầu vào name
$name = $request->input( 'name' );
echo 'Name: ' $name;
Bước 5 - Thêm dòng sau vào tệp routes/web.php.
Route::get( '/register' , function () {
return view( 'register' );
});
Route::post( '/user/register' ,array( 'uses' => 'UserRegistration@postRegister' ));
Bước 6 - Truy cập URL sau và bạn sẽ thấy form đăng ký như trong hình bên dưới Nhập chi tiết đăng ký và nhấp vào register, bạn sẽ thấy trên trang thứ hai
mà chúng ta đã truy xuất và hiển thị chi tiết thông tin người dùng đăng ký
http://localhost:8000/register
Bước 7 - Đầu ra sẽ trông giống như được hiển thị đây.
Trang 36Bài 8: Response trong laravel
Ứng dụng web phản hồi (response) yêu cầu của người dùng theo nhiềucách tùy thuộc vào các tham số Bài này giải thích cho bạn chi tiết về các phảnhồi trong các ứng dụng web của Laravel
Trang 37Response cơ bản
Laravel cung cấp một số cách khác nhau để trả lời phản hồi Phản hồi cóthể được gửi từ route hoặc từ controller Response cơ bản có thể được gửi làchuỗi đơn giản như được hiển thị trong code mẫu bên dưới Chuỗi này sẽ được
tự động chuyển đổi thành phản hồi HTTP thích hợp
Ví dụ
Bước 1 - Thêm mã sau vào file routes/web.php.
Route::get('/basic_response', function () {
return 'Hello World';
Phản hồi có thể được gắn vào các tiêu đề bằng phương thức header().
Chúng tôi cũng có thể đính kèm loạt header như trong code mẫu bên dưới
return response($content,$status)
->header( 'Content-Type' , $type)
->header( 'X-Header-One' , 'Header Value' )
->header( 'X-Header-Two' , 'Header Value' );
Ví dụ
Quan sát ví dụ sau để hiểu thêm về Response
Bước 1 - Thêm mã sau vào tệp routes/web.php.
Trang 38return response("Hello", 200)->header('Content-Type', 'text/html');
Phương thức withcookie() được sử dụng để đính kèm cookie Cookie
được tạo bằng phương thức này có thể được đính kèm bằng cách gọi phương
thức withcookie() với thể hiện response Theo mặc định, tất cả các cookie được
tạo bởi Laravel đều được mã hóa và ký để client không thể sửa đổi hoặc đọcchúng
Ví dụ
Quan sát ví dụ sau để hiểu thêm về cách đính kèm cookie:
Bước 1 - Thêm mã sau vào tệp routes/web.php.
Route::get('/cookie',function() {
return response("Hello", 200) -> header('Content-Type', 'text/html') ->withcookie('name','hieulv68');
});
Bước 2 - Truy cập URL sau để kiểm tra.
Trang 39Bước 3 - Đầu ra sẽ xuất hiện như trong hình ảnh sau đây.
Phản hồi JSON
Phản hồi JSON có thể được gửi bằng phương thức json Phương thức này
sẽ tự động thiết lập Content-Type header thành application/json Phương thức
json sẽ tự động chuyển đổi mảng thành phản hồi json thích hợp
Ví dụ
Quan sát ví dụ sau để hiểu thêm về Phản hồi JSON
Bước 1 - Thêm dòng sau vào tệp routes/web.php.
Route::get('json',function() {
return response()->json(['name' => 'hieulv68', 'job' => 'Giảng viên CNTT']);});
Bước 2 - Truy cập URL sau để kiểm tra phản hồi json.
http://localhost:8000/json
Bước 3 - Đầu ra sẽ xuất hiện như trong hình ảnh sau đây.
Trang 40Bài 9: Controllers
Trong framework MVC, chữ 'C' là viết tắt của Controller Nó hoạt động như một trao đổi trực tiếp giữa Views và Models Trong bài này, bạn sẽ tìm hiểu về Controller trong Laravel.
Tạo một controller
Mở dấu nhắc lệnh hoặc terminal dựa trên hệ điều hành bạn đang sử dụng
và nhập lệnh sau để tạo controller bằng Artisan CLI (Command Line Interface).php artisan make:controller <controller-name>
Thay thế <controller-name> bằng tên của controller bạn muốn tạo Hàm
tạo đã tạo có thể được nhìn thấy tại app/Http/Controllers.
Bạn sẽ thấy rằng một số code cơ bản đã được thực hiện cho bạn và bạn cóthể thêm code tùy chỉnh của mình Controller được tạo có thể được gọi từ
routes/web.php theo cú pháp sau.
Cú pháp
Route::get(‘base URI’,’controller@method’);
Ví dụ
Bước 1 - Thực hiện lệnh sau để tạo UserContoder.
php artisan make:controller UserController
Bước 2 - Sau khi thực hiện thành công, bạn sẽ nhận được output sau.