Illuminate\Http\Request 객체는 심포니의 HttpFoundation\Request 객체를 상속받아 라라벨에서 사용함.
client 의 요청에 대한 정보와, 값을 서버에서 확인하는 방법을 제공해 준다.
class Request extends SymfonyRequest implements Arrayable, ArrayAccess
{
// ....
}
Request 객체를 얻는 방법
// 첫번째 방법
// Type-Hint 를 사용해서 객체주입
class PersonController extends Controller
{
public function index(Request $request)
{
$allInput = $request->all();
}
}
// 두번째 방법
// global request() 핼퍼 함수를 이용해서
$request = request();
$allInput = $request->all();
//또는
$allInput = request->all();
// 세번째 방법
// global app() 핼퍼 함수를 사용해서.
$request = app(Illuminate\Http\Reqeust::class);
$request = app('request);
다루는 방법은 2가지가 있다.
route 에서 다루기는 방법
controller 에서 다루기는 방법
paramater 에 type-hint 로 넣어줌으로써 Request Instance 를 얻을 수 있다.
route -> controller 방향으로 진행된다.
Route 에서
Route::get('/', closure);
Route::get('/', function(Request $request) {
// $request....
return view('welcome');
})
Route::put('/user/{id}', [UserController::class, 'update']);
Controller 에서
# UserController
public function update(Request $request, string $id) : RedirectResponse
{
// Update...
return redirect('/users');
}
Laravel Request 객체는 다양한 기능 함수를 갖추고 있다.
경로확인
$request->path();
$request->url();
$request->fullUrl();
$request->fullUrlWithQuery(['type' => 'phone']);
$request->fullUrlWithoutQuery(['type']);
$request->host();
$request->ip();
$request->httpHost();
$request->schemeAndHttpHost();
경로검증
$request->is('admin/*');
$request->routeIs('admin.*);
전송방법 Method 확인
$request->method();
$request->isMethod('post');
헤더 정보 확인
request->header('X-Header-Name');
$request->header('X-Header-Name', 'default');
$request->hasHeader('X-Header-Name')
$request->bearerToken();
요구하는 타입확인
$request->getAcceptableContentTypes();
$request->accepts(['text/html', 'application/json']);
$request->prefers(['text/html', 'application/json']);
$request->expectsJson();
전달되는 데이타 확인
$request->all();
$request->collect();
$request->collect('users')->each(function (string $user) { // ... });
$request->input('name');
$request->input();
$request->input('products.0.name');
$request->input('products.*.name');
$request->query('name');
$request->query('name', 'Helen');
$request->query();
Json 데이타로 넘어온 경우
$request->input('user.name');
문자열로 바로 받기
$request->string('name')->trim();
true, false 로 바로 받기
$request->boolean('archived');
날짜로 바로 받기
$request->date('birthday');
$request->date('elapsed', '!H:i', 'Europe/Madrid');
Enum
$request->enum('status', Status::class);
이름으로 직접 받기
$request->name;
선택적으로 받기 only, except
$input = $request->only(['username', 'password']);
$input = $request->only('username', 'password');
$input = $request->except(['credit_card']);
$input = $request->except('credit_card');
조건 검사하기
$request->has('name')
$request->has(['name', 'email'])
$request->hasAny(['name', 'email'])
$request->whenHas('name', function (string $input) { // ... });
$request-whenHas('name', function (string $input) { // The "name" value is present... }, function () { // The "name" value is not present... });
$request->filled('name');
$request->anyFilled(['name', 'email'])
$request->whenFilled('name', function (string $input) { // ... });
$request-whenFilled('name', function (string $input) { // The "name" value is filled... }, function () { // The "name" value is not filled... });
if ($request->missing('name')) { // ... } $request-whenMissing('name', function (array $input) { // The "name" value is missing... }, function () { // The "name" value is present... });
값 변경
$request->merge(['votes' => 0]);
$request->mergeIfMissing(['votes' => 0]);
Input 값 session 저장하기
$request->flash();
$request->flashonly(['username','email']);
$request->flashExcept('password');
// Input 값 session 제거하기
$request->flush();
다른 방식의 Input 값 유지
return redirect('form')->withInput();
return redirect()->route('user.create')->withInput();
return redirect('form')->withInput(
$request->except('password')
);
이전값 확인
$request->old('name');
Cookies
$request->cookie('name')
업로드 파일 다루기
$request->file('photo');
$request->photo;
$request->hasFile('photo)
$request->file('photo')->isValid();
경로
$request->photo->path();
$request->photo->extension();
저장하기
$request->photo->store('images');
$request->photo->store('images', 's3');
$request->photo->storeAs('images, 'filename.jpg', 's3');
https://laravel.com/docs/10.x/requests
Laravel - The PHP Framework For Web Artisans
Laravel is a PHP web application framework with expressive, elegant syntax. We’ve already laid the foundation — freeing you to create without sweating the small things.
laravel.com
'Laravel' 카테고리의 다른 글
| Laravel - Eloquent Relationship (One to Many 일대다) (0) | 2023.12.06 |
|---|---|
| Laravel - CRUD 기본 코드 (0) | 2023.12.01 |
| Laravel Breeze 와 Laravel Jetstream 차이점. (0) | 2023.11.19 |
| Laravel - Jetstream Teams 설치하기 (0) | 2023.11.19 |
| Laravel - global 로 laravel 프로젝트 생성 명령어 설정하기 (0) | 2023.11.19 |