Laravel使ってみた (6) - Request & Input -
まぁドキュメント通り、Inputクラス(Requestクラスのエイリアス?)だとかのドキュメント読みを進めてみる
Input::get Input::except Input::only
getメソッドでは引数で指定したキーの値を取得できる。又、第2引数にデフォルト値を指定出来る。でexceptメソッドは引数に指定したキー名以外のパラメーターの一覧を取る、onlyが逆というか指定したのだけを配列で取るっていうメソッドな模様
とりあえず突っ込みどころは特に無さそうなのでこの件はパス
ちなみにこのInputってクラスはIlluminateHttpRequestクラスのエイリアスなのでは無いかと
Cookie
クッキーを扱うにはCookieクラスを使う。でこのクラスを使って送出されるクッキー自体は平文で送出されない模様。で基本的にはmakeメソッドを使う、特に有効期限が無いのであれば、foreverメソッドを使えば良い。だけどforeverメソッドを使っても永久に有効って訳じゃなくて、2628000分という数値がぶち込まれている。まぁ特にきにしなくても良いかも知れないけど、そこら辺は上手くテストすれば良いだけな話なのかも。あとforeverメソッドとmakeメソッドの違いを言うと前者はminutesっていうオプションが存在しないだけで、内部的にはmakeメソッドを使ってる。使うには
<?php
$response = Response::make(
View::make("home")
);
$cookie = Cookie::forever("name", "value");
$response->withCookie($cookie);
な感じで一度Responseを作ってからwithCookieメソッドでレスポンスにクッキーを盛り込むような感じっぽい。で利用する際はInputと同様にgetメソッドを使うが、第2引数にデフォルト値を指定する事も出来る模様
Session
Session::putしてSession::getで取る的な感じなのはまぁ大体どんなものも同じかと。でSession::pushっていうのもあるけど、これはSession::putされているのに大して配列で新しい値をぶち込めるっていう感じかと
でSession::flashを使う事で、Inputで取得出来るデータをフラッシュオブジェクト(取得したら次回リクエスト時には参照できなくなるセッションオブジェクト)を利用する事が出来る
<?php
$id = Session::get("id");
if (empty($id)) {
Session::flash("id", Input::get("id", null));
}
var_dump($id);
まぁ使い方があれだけど。でInput::flashっていうのもあるけど、これはInputで参照できるデータをフラッシュオブジェクトとして格納する事が出来る。但し、取得する場合にはSession::getOldInput使わないと出来ない模様
<?php
Input::flash();
var_dump(Session::getOldInput("id"));
あとはAPIリファレンスを参照されたし
んまぁこんな感じかな。Requestクラスは特に突っ込みどころ無いような気がしたので(ry ちなみに
<?php
var_dump(Request::header("Accept"));
// httpsかをチェックした真偽値
var_dump(Request::secure());
// ヘッダーにX-Requested-With: XMLHttpRequestかどうかをチェックした結果の真偽値
var_dump(Request::ajax());
Request::ajaxに関しては普通にXMLHttpRequestを使っただけではtrueにならない。setRequestHeader("X-Requested-With", "XMLHttpRequest")とかされてない限りはtrueにはならない模様
以上。ファイルアップロード関係のInput::fileはまだやってないのでやり次第追記する
追記: Input::file
んまぁ使い方は単純にInput::getだとかと同じ。で取得される内部型はSymfony\Component\HttpFoundation\File\UploadedFileとなる模様
- <input type="file" name="file" /> と指定したらUploadedFile型
- <input type="file" name="file[]" /> と指定したらArray<UploadedFile>型
になる。まぁあとはAPIリファレンスと上記のリンクなSymfony2のUploadedFileリファレンス読めば良いだけなので特に特記する事項は無いと思うので(ry