Laravel – クエリーパラメーター

概要

クエリーパラメーターは、フォームの送信時にGETメソッドを指定した時に送信されるパラメーター形式。

ルートパラメーターが直接URIの一部としてパラメーターの値を送るのに対して、クエリーパラメーターはパラメーターの名前と値をセットで送る。たとえば以下の様に。

http://www.my_bbs.com/search_post?user_id=10

このパラメーターをコントローラーで取得するには、以下の2通りの方法がある。

  • アクションの引数でRequestオブジェクトを指定し、その属性でパラメーター名を指定する。
  • アクション内でrequest()関数の引数にパラメーター名を指定する

いずれの場合も、コントローラーで以下の指定が必要。

use Illuminate\Http\Request;

ルーティング

ルーティング設定では、パラメーターを送信するパスとそれを受け取るコントローラー・アクションを指定するだけで、特別の記述はない。

Route::get('パス', 'ルーティング先');

たとえばmy_bbsというアプリケーションで以下のようにルーティングを設定した場合、

リクエスト側のURLは以下のようになる。

http://www.my_bbs.com/search_post?user_id=5

複数のパラメーターを送る場合は以下の様に'&'で区切る。

http://www.my_bbs.com/search_post?user_id=5&keyword=hello

ルーティングではパラメーターの数や名前には関与せず、コントローラー・アクションにおいてこれらを扱う。

コントローラー

必須事項

Request使用の宣言

コントローラー定義前に以下の定義が必要。artisanでコントローラーを生成すると、この定義は自動的に含まれる。

use Illuminate\Http\Request;

アクションの引数でのRequestオブジェクト指定

コントローラーでクエリーパラメーターを扱うのに、Requestパラメーターをアクションの引数に指定する方法と、request()関数を使う方法があるが、いずれの場合でも、アクションの引数にRequestクラスのオブジェクトを引数として指定する。

public function アクション名(Request $request) { ... }

引数の変数名は、必ずしも$requestでなくてもよい。

共通のコントローラー・アクションの形式

上記2つをまとめたコントローラー・アクションの一般形は以下のとおり。

アクションにおけるパラメーターの取得

Requestオブジェクトの属性からパラメーターを受け取る方法

アクションの引数に指定したオブジェクトの属性値に、パラメーター名を指定して値を取り出す。引数の変数名は$requestである必要はなく任意。

$request->パラメーター名

たとえば先のリクエストの項で挙げた例の場合、以下のような処理例となる。ビューではコントローラーで設定された変数を使う。

複数パラメーターが送られる場合は、Request引数の属性で順次パラメーター名を指定して取り出す。

request()関数にパラメーター名を指定して受け取る方法

request()関数の引数に、クエリーのパラメーター名を指定して値を取り出す。

request('パラメーター名');

上記の複数パラメーターの例をこの方法で書き換えると以下のとおり。

パラメーター省略時

リクエスト送信時にパラメーターを送信した時など、コントローラーで想定したパラメーターが存在しないときはエラーにならず、値が空文字列となる。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です