HTTP Requests

PHP:7.2

Laravel:5.7

在 Laravel 中要取得 HTTP 的請求資訊,可以透過 Illuminate\Http\Request class 來處理。

基本使用

在 Controller 中,透過 Dependency injection 代入 Request class 以供使用。

Controller

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestController extends Controller
{
    public function test(Request $request)
    {
        // 取得 name 參數
        $name = $request->name;
        // 也可以透過 input() 取得
        $name = $request->input('name');

        // 如果此參數,使用預設值 Johnson
        $name = $request->input('name', 'Johnson');

        // 取得所有參數
        $result = $request->all();

        // 判斷是否有此參數
        if ($request->has('name')) {
            // Do something
        }
    }
}

另外,如果有設定 route parameter,可以直接傳入 Controller
Route

Route::get('test/{id}', 'TestController@test');

Controller

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use PhpOffice\PhpSpreadsheet\IOFactory;

class TestController extends Controller
{
    // 傳入 $id
    public function test(Request $request, $id)
    {
        // 當然也可以用 $request->id
        return $id;
    }
}

其他應用

// 判斷進入路徑
if ($request->is('test/*')) {
    // 判斷 endpoint 路徑
    $path $request->path();

    // 回傳 url,不含參數
    $request->url();

    // 回傳 url,不含參數
    $request->fullUrl();
}

File

利用 Request 接收檔案的方式大致上都是相同的。

範例

$fileObj = $request->myfile;
// or
$fileObj = $request->file('myfile');

// 原始檔案名稱
$fileObj->getClientOriginalName();

// 檔案的 Extension
$fileObj->getClientOriginalExtension();

// 檔案在伺服器上的暫存路徑
$fileObj->getRealPath();

// 檔案大小
$fileObj->getSize();

// 檔案類型
$fileObj->getMimeType();

// 直接使用的話為檔案暫存路徑
echo $fileObj;
Categories: Laravel