【Symfony】Requestオブジェクトからリクエストパラメータを取得する
Requestオブジェクトに触れる機会は多く、様々な情報を取得することができる。
ここではリクエストパラメータに関する扱いをまとめる。
(導入)Requestオブジェクトを扱う
Symfonyのコントローラではアクションの引数とすることで、簡単に Request
オブジェクトを扱うことができる。
<?php // ... use Symfony\Component\HttpFoundation\Request; // ... public function index(Request $request) { $page = $request->query->get('page', 1); }
リクエストパラメータへのアクセス
GETおよびPOSTのリクエストパラメータにアクセスするには、それぞれ以下のようにする。
<?php // リクエストパラメータfooの値を取得 // GET $request->query->get('foo'); // POST $request->request->get('foo');
また、他にもattributes
プロパティでルーティングパラメータの取得ができる。
<?php // @Route("/{foo}") としていたときには以下のようにしてパラメータの値が取得できる $request->attributes->get('foo');
query
request
attributes
はすべて ParameterBag
オブジェクトであり、このオブジェクトには get()
の他にも all()
や has()
などといったメソッドが用意されている。
<?php // すべてのPOSTリクエストパラメータの値を取得する $params = $request->request->all(); // 連想配列なので以下のように各値へアクセスする $params['foo']; // 特定のパラメータを持っているかどうかをチェックする $request->query->has('foo') // true or false
あと、これらのプロパティに横断的にアクセスできるメソッドも用意されている。
<?php // Requestオブジェクトのgetメソッドはrequest・query・attributesプロパティを横断的に検索する // 優先順位は高い順に attributes > query > request っぽい $request->get('foo');
他にもたくさんあるのでドキュメントを眺めてみると楽しい。