Bài 8: Laravel Request

Bài 8: Laravel Request

Trong bài này chúng ta sẽ tìm hiểu chi tiết về Request trong Laravel. Laravel Request cung cấp dữ liệu về các yêu cầu HTTP cũng như cho phép thao tác với các yêu cầu này.

A. Các phương thức Request

1. $request->path()

Phương thức path trả về thông tin đường dẫn yêu cầu, ví dụ với đường dẫn https://vietlaravel.com/category/laravel-basic thì phương thức path trả về category/laravel-basic

// Ví dụ https://vietlaravel.com/category/laravel-basic
$uri = $request->path();
// Trả về category/laravel-basic
echo $uri;

.

2. $request->is()

Phương thức is cho phép kiểm tra xem đường dẫn yêu cầu có khớp với một mẫu, sử dụng ký tự * để trùng khớp tất cả các chuỗi.

if ($request->is('admin/*')) {
    // các đường dẫn bắt đầu bằng admin/ được xử lý
    // ví dụ https://vietlaravel.com/admin/product/create, https://vietlaravel.com/admin/news/create
}
if ($request->is('category/laravel-nang-cao')) {
    echo 'Đường dẫn bạn vừa truy nhập đúng là https://vietlaravel.com/' . $request->path();
}

3. $request->url()

Phương thức này trả về đường dẫn đầy đủ của URL không có query string, query string là đoạn đằng sau dấu ? trong URL, ví dụ https://vietlaravel.com/?page=2 thì page=2 chính là query string dùng để truyền giá trị giữa các trang web.

// ví dụ đường dẫn https://vietlaravel.com/?page=2
$url = $request->url();

// trả về https://vietlaravel.com
echo $url;

4. $request->fullurl()

Phương thức này trả về đường dẫn URL đầy đủ cả query string

// ví dụ đường dẫn https://vietlaravel.com/?page=2
$full_url = $request->fullurl();

// trả về https://vietlaravel.com/?page=2
echo $full_url;

5. $request->method() và $request->isMethod()

Phương thức này trả về cách thức yêu cầu gửi là GET hay POST, có thể sử dụng phương thức isMethod để kiểm tra cách thức gửi yêu cầu:

$method = $request->method();
if ($request->isMethod('post')) {
    echo 'POST request';
} else {
    echo 'GET request';
}

6. $request->ip()

Phương thức ip trả về địa chỉ ip của người dùng.

$ip_address = $request->ip();
echo '<br>Địa chỉ IP người dùng: ' . $ip_address;

7. $request->server()

Phương thức server trả về các thông tin liên quan đến máy chủ ở dạng mảng. Một số các thông tin thường sử dụng như:

  • URL_REFERER: đường dẫn url tham chiếu
  • REQUEST_TIME: thời gian yêu cầu gửi đến máy chủ web
  • QUERY_STRING: query string trong URL
  • SERVER_ADDR: Địa chỉ máy chủ
  • REQUEST_SCHEME: giao thức sử dụng
$server_address = $request->server('SERVER_ADDR');
echo '<br>Địa chỉ IP máy chủ: ' . $server_address;

$url_referer = $request->server('URL_REFERER');
echo '<br>Đường dẫn xuất phát: ' . $url_referer;

8. $request->header()

Phương thức header trả về các thông tin header của request dưới dạng mảng bao gồm thông tin về host yêu cầu, thông tin về trình duyệt sử dụng user-agent, dữ liệu cookie… Trong các thông tin này thông tin về trình duyệt user-agent thường được sử dụng:

$user_agent = $request->header('User-Agent');
echo $user_agent;

 

B. Lấy thông tin nhập liệu trong Form

Các giá trị nhập liệu từ form có thể lấy dễ dàng trong Laravel với request

$username = $request->input('username');

Ví dụ chúng ta tạo file resources/views/register.php với nội dung như sau:

<html>

   <head>
      <title>Form Example</title>
   </head>

   <body>
      <form action = "/user/register" method = "post">
         @csrf
      
         <table>
            <tr>
               <td>Name</td>
               <td><input type = "text" name = "name" /></td>
            </tr>
            <tr>
               <td>Username</td>
               <td><input type = "text" name = "username" /></td>
            </tr>
            <tr>
               <td>Password</td>
               <td><input type = "text" name = "password" /></td>
            </tr>
            <tr>
               <td colspan = "2" align = "center">
                  <input type = "submit" value = "Register" />
               </td>
            </tr>
         </table>
      
      </form>
   </body>
</html>

Chúng ta tạo controller UserRegistration với nội dung như sau:

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;

class UserRegistration extends Controller {
   public function getRegister(){
      return view('register');
   }

   public function postRegister(Request $request) {
      //Nhận dữ liệu từ ô name input
      $name = $request->input('name');
      echo 'Name: '.$name;
      echo '<br>';
      
      //Nhận dữ liệu từ ô username input
      $username = $request->username;
      echo 'Username: '.$username;
      echo '<br>';
      
      //Nhận dữ liệu từ ô password input
      $password = $request->password;
      echo 'Password: '.$password;
   }
}

Tạo tiếp Route

Route::get('/user/register','[email protected]');
Route::post('/user/register','[email protected]'));

Tiến hành truy cập http://example.test/register nhập dữ liệu và kiểm tra kết quả.

 Bạn đọc trong quá trình thực hành có thắc mắc hoặc góp ý, xin vui lòng comment dưới bài, chúng tôi sẽ trả lời bạn sớm nhất.

 

Bài viết có dùng một số nguồn từ allaravel

Post Comment