リクエストデータ、セッションデータ

Tag:

リクエストデータ、セッションデータの操作方法、ルートパラメーターの取得方法です。

リクエストデータ操作

Requestクラスのメソッドを利用すると、HTTPメソッド(GETメソッド、POSTメソッドなど)を区別なくリクエストデータを操作できます。

class xxxxController extends Controller
{
    public function xxxx(Request $request)
    {
        // クライアントのIPを取得
        $clientIp = $request->getClientIp();

        // 入力値の存在チェック
        // 1.hasメソッド
        // 値が存在し、かつ空文字ではない場合にtrue。空文字の場合falseになるので注意。
        if ($request->has('name')) {
        }
        // 2.existsメソッド
        // 存在すればtrue。
        if ($request->exists('name')) {
        }


        // 値取得
        $name = $request->input('name');  // nameを取得
        $name = $request->name;           // nameを取得
        $input = $request->all();         // 全データ取得
        $input = $request->only(['username', 'password']);  // usernameとpasswordを取得
        $input = $request->except(['password']);            // password以外を取得

        // 認証済みユーザーのインスタンスを取得
        $user = $request->user(); 

        // 直前のデータを取得
        $username = $request->old('username');

        // フラッシュ方法①
        $request->flash();                        // 全入力データをフラッシュ
        $request->flashOnly('username', 'email'); // 一部入力データをフラッシュ
        $request->flashExcept('password');        // 一部入力データをフラッシュ

        // フラッシュ方法②
        return redirect('form')->withInput();
        return redirect('form')->withInput($request->except('password'));

        // 直前のURLにリダイレクト
        return redirect()->back()->withInput($request->only('username'));
    }
}

フラッシュデータ(次のリクエストの間でのみ存在するデータ)は、oldヘルパー関数でも取得できます。

セッションデータ操作

class xxxxController extends Controller
{
    public function xxxx(Request $request)
    {
        // 存在チェック
        if ($request->session()->has('users')) {
            //
        }

        $request->session()->put('key', 'value');              // 値保存
        $request->session()->push('user.teams', 'developers'); // 値追加

        $value = $request->session()->get('key');              // 値取得
        $value = $request->session()->pull('key', 'default');  // 値取得後、セッションから削除

        $request->session()->forget('key'); // 指定アイテムを削除
        $request->session()->flush();       // 全て削除


        // フラッシュデータ設定
        $request->session()->flash('message', '本登録が完了しました'); 

        // フラッシュデータを次のリクエストまで持続
        $request->session()->reflash();

        // 特定のフラッシュデータのみ持続
        $request->session()->keep(['id', 'name']);
    }
}

Sessionファサード、sessionヘルパー関数でもセッションデータを操作できます。

次のように、Bladeテンプレート上でフラッシュデータを扱えます。

@if (Session::has('message'))
<p>{{ Session::get('message') }}</p>
@endif

ルートパラメーターを取得

Route::get('user/{id}', function ($id) {
    return 'User '.$id;
});

{id} とすると必須パラメータになります。
{id?} とすると任意パラメータになります。

スポンサーリンク