2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Laravel】HTTPリクエストに関して

Posted at

はじめに

絶賛学習中であるlaravelについて
Webアプリの基本である入力(リクエスト)の取得に関して学習した内容をまとめています。

リクエストハンドリング

ユーザーからのリクエストは、
public/index.php内でIlluminate/Http/Requestのインスタンスとして取得している。
リクエストをコントローラー内で参照する方法は下記3つ。

1. Requestファザード

Requestファザードの実装はIlluminate\Support\Facades\Request
使用する時は、use Illuminate Support\Facades\Requestが必要。

use Illuminate\Support\Facades\Request;

//'id'キーでリクエストから値を取得
$id = Request::get('id');

//'id'キーがない場合は、'name'を返す
$id = Request::get('id','name');

//全ての入力値を取得
$input = Request::all();

//指定した項目のみ取得
$input = Request::only(['id','name']);

2. Requestオブジェクト

1.Requestファザードの実態は、Illuminate\Http\Requestであり
メソッドの引数に型宣言することで、直接使用することができる。

※Requestファザードで使用できるメソッドはRequestオブジェクトでも使用可

use Illuminate\Http\Request;

class UserController extends Controller
{
    public function show (Request $request)
    {
        $id = $request->get('id'); 
    }
}

3. フォームリクエスト

入力値の取得に加え、①認証機能や②バリデーション(入力チェック)を定義できる。
バリデーション部分をコントローラーから分離するメリットがある。

フォームリクエストのクラスファイル作成

php artisan make:request ファイル名

↓↓↓ 作成されたファイル

class userRegister extends FormRequest
{
//①認証に関する設定
 public function authorize()
 {
   return true; //true実行許可
 }
//②バリデーションルール
 public function rules()
 {
   return [
     'name' => ['required','string'],
   ];
 }

コントローラーで使用する
2.Requestオブジェクトのuseとメソッド引数である型宣言を変更する

use App\Http\Requests\UserRegister;

class UserController extends Controller
{
    public function show (UserRegister $request)
    {
        $id = $request->get('name'); 
    }
}

以上。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?