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;