【Laravel】コントローラーの$requestから取得できるもの(表示中のURLなど)

もくじ

バージョン

Laravel:9.x

$request

URL例:http://localhost/foo/bar?hoge=fuga

$request->url();

クエリパラメータは取得しません。

$request->url();

// 結果
http://localhost/foo/bar

$request->fullUrl();

クエリパラメータも一緒に取得できます。

$request->fullUrl();

// 結果
http://localhost/foo/bar?hoge=fuga

$request->getRequestUri();

ドメインは取得しません。

$request->getRequestUri();

// 結果
/foo/bar?hoge=fuga

$request->getUri();

全て取得します。

$request->getUri();

// 結果
http://localhost/foo/bar?hoge=fuga

$request->getUriForPath('');

ルートを取得します。

$request->getUriForPath('');

// 結果
http://localhost

$request->path();

パスを取得します。

$request->path();

// 結果
foo/bar

$request->route()->named('home')

現在のリクエストが特定の名前付きルートにルーティングされたかどうかを確認したいときに用います。 注意および前提として、ルーティングに名前をつけておく必要がります。

たとえば下記の時、ルーティング名homeでコントローラーのhandleメソッドに飛んできたとき処理Aが発動し、別のルーティングで飛んできたなら処理Bが発動します。

Route::get('/', function () {
    return redirect()->route('home');
});
public function handle($request, Closure $next)
{
    if ($request->route()->named('home')) {
        // 処理A
        return;
    }

    // 処理B
    return;
}

セッション $request->session()

$request->session()

これでセッション情報をすべて取得できます。
特定のセッションを取得したいときはget()を使います。

たとえば、セッションにidnameを保存している場合、

$request->session()->get(`id`)
$request->session()->get(`name`)

参考URL

ルーティング 9.x Laravel

Laravel で現在の URL 取得方法まとめ - to-me-mo-rrow - 未来の自分に残すメモ -