Bài giảng Phát triển phần mềm nguồn mở - Bài 8: Controllers, request, response, session - Nguyễn Hữu Thể

PHÁT TRIỂN PHẦN MỀM NGUỒN MỞ  
CONTROLLERS, REQUEST, RESPONSE, SESSION  
Nguyễn Hữu Thể  
<html>  
<body>  
1 View: nhap.blade.php  
<form action="user/register" method="post">  
<input type="hidden" name="_token" value="<?php echo csrf_token() ?>">  
Name <input type="text" name="name" />  
<input type="submit" value="Register" />  
</form>  
</body>  
</html>  
2. Controller: MyController.php  
<?php  
namespace App\Http\Controllers;  
use Illuminate\Http\Request;  
class MyController extends Controller{  
public function postRegister(Request $request){  
$name = $request->input('name');  
echo 'Name: '.$name;  
}
}
3. Route:  
Route::get ( '/register', function () {  
return view ( ‘nhap' );  
} );  
Route::post('/user/register’,’MyController@postRegister');  
Controllers  
− Controllers có thể nhóm các xử lý request logic vào  
một class.  
− Thư mục Controllers: app/Http/Controllers  
❖ Tạo Controller:  
php artisan make:controller <controller-name> --plain  
5
Controllers  
namespace App\Http\Controllers;  
use App\User;  
use App\Http\Controllers\Controller;  
class UserController extends Controller {  
/**  
* Show the profile for the given user.  
*
* @param int $id  
* @return Response  
*/  
public function show($id) {  
return view('user.profile', ['user' =>  
User::findOrFail($id)]);  
}
}
6
Controllers  
▪ Định nghĩa một route cho action của controller  
Route::get('user/{id}', 'UserController@show');  
▪ Khi request với route URI, phương thức show của class  
UserController sẽ được thực thi.  
7
Action Controllers  
__invoke(): Định nghĩa một controller xử lý duy nhất một action  
namespace App\Http\Controllers;  
use App\User;  
use App\Http\Controllers\Controller;  
class ShowProfile extends Controller  
{
public function __invoke($id)  
{
return view('user.profile', ['user' => User::findOrFail($id)]);  
}
}
Khi đó bạn đăng ký một route cho một action controllers, bạn không cần  
xác định phương thức:  
Route::get('user/{id}', 'ShowProfile');  
8
Example  
Step 1 − Execute the following command to create UserController.  
php artisan make:controller UserController --plain  
Step 2 − After successful execution, you will receive the following output.  
Step 3 − You can see the created controller at  
app/Http/Controller/UserController.php with some basic coding already written  
for you and you can add your own coding based on your need.  
<?php  
namespace App\Http\Controllers;  
use Illuminate\Http\Request;  
use App\Http\Requests;  
use App\Http\Controllers\Controller;  
class UserController extends Controller {  
//  
}
9
HTTP Requests  
− Lấy đối tượng hiện tại của HTTP request  
namespace App\Http\Controllers;  
use Illuminate\Http\Request;  
class UserController extends Controller  
{
public function store(Request $request)  
{
$name = $request->input('name');  
//  
}
}
11  
Dependency Injection & Route Parameters  
− Khi controller cần lấy input từ tham số route thì  
• Phải liệt kê danh sách tham số route vào sau các  
dependencies.  
Route::put('user/{id}', 'UserController@update');  
12  
Dependency Injection & Route Parameters  
− Truy cập vào tham số route id bằng cách định nghĩa  
phương thức trong controller  
namespace App\Http\Controllers;  
use Illuminate\Http\Request;  
class UserController extends Controller  
{
public function update(Request $request, $id)  
{
//  
}
}
13  
Đường dẫn Request & Phương thức  
− Nhận đường dẫn Request  
• Phương thức path trả về thông tin đường dẫn của request.  
• Vì vậy, nếu request gửi đến là http://domain.com/foo/bar,  
phương thức path sẽ trả về foo/bar:  
$uri = $request->path();  
− Phương thức is: xác nhận những request gửi đến có đường dẫn  
khớp với pattern hay không. Có thể sử dụng ký tự *  
if ($request->is('admin/*')) {  
//  
}
14  
Nhận Request URL  
− Để nhận đường dẫn đầy đủ URL từ request gửi  
• => phương thức url or fullUrl.  
// Without Query String...  
$url = $request->url();  
// With Query String...  
$url = $request->fullUrl();  
15  
Nhận phương thức Request  
− Phương thức method: trả về phương thức HTTP tương ứng  
với request.  
− Phương thức isMethod: xác thực phương thức HTTP khớp  
với string  
$method = $request->method();  
if ($request->isMethod('post')) {  
//  
}
16  
Lấy tất cả dữ liệu Input  
− Phương thức all(): Lấy tất cả dữ liệu input như một  
array  
$input = $request->all();  
17  
Lấy giá trị một Input  
− Phương thức input  
$name = $request->input('name');  
− Có thể truyền giá trị của tham số như là một đối số thứ hai  
trong phương thức input. Giá trị sẽ được trả về nếu giá trị  
input không có trong request  
$name = $request->input('name', 'Sally');  
− Khi làm việc với form chứa mảng input, sử dụng dấm "chấm"  
để truy cập giá trị của mảng  
$name = $request->input('products.0.name');  
$names = $request->input('products.*.name');  
18  
Lấy Input qua thuộc tính động  
− Nếu form ứng dụng có chứa trường name, có thể truy lấy giá  
trị bằng cách:  
$name = $request->name;  
19  
Lấy giá trị JSON Input  
− Khi gửi JSON requests đến ứng dụng, có thể lấy dữ liệu JSON  
qua phương thức input (Content-Type header của request là  
application/json).  
− Có thể dùng cú pháp "dấu chấm" để lấy giá trị mảng JSON  
$name = $request->input('user.name');  
20  
Tải về để xem bản đầy đủ
pdf 56 trang yennguyen 21600 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phát triển phần mềm nguồn mở - Bài 8: Controllers, request, response, session - Nguyễn Hữu Thể", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_phat_trien_phan_mem_nguon_mo_bai_8_controllers_req.pdf