はじめに
絶賛学習中である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');
}
}
以上。