GET, POST, URLパラメータ(
ルーティング設定を参照)の値をリクエストオブジェクトから取得することができます。コントローラ(アクション)内ではリクエストオブジェクトに
$this->request でアクセスできます。
public function myAction()
{
$var1 = $this->request->fetchGetValue("name"); // $_GET["name"]
$var2 = $this->request->fetchPostValue("name"); // $_POST["name"]
$var3 = $this->request->fetchParameterValue("p1");
}
キーがあって値がない時(例: ?name=&age= )、通常は空文字列になりますが、Sabelではnullになります。値が空なのかキー自体がないのかは、下記のメソッドで知ることができます。
public function myAction()
{
if ($this->request->isGetSet("name")) {
// キーはある
}
if ($this->request->isPostSet("name")) {
// キーはある
}
}
fetchGetValue()やfetchPostValue()は数回書くだけでも面倒なので(エディタに補完があったとしても)、その辺をなんとかしてくれる
こちらのアドオンを使用するといいかもしれません。
なお、それぞれの値を配列で受け取ることも可能です。配列で受け取った場合でも、空の値は空文字列ではなくnullになります。
public function myAction()
{
$get_vals = $this->request->fetchGetValues();
$post_vals = $this->request->fetchPostValues();
$uri_params = $this->request->fetchParameterValues();
}
アップロードファイルの取得
アップロードされたファイルを取得するにはgetFile()、もしくはgetFiles()を使用してください。
public function myAction()
{
$file = $this->request->getFile("file"); // $_FILES["file"]
if ($file !== null && !$file->isEmpty()) {
$name = $file->name; // $_FILES["file"]["name"]
$type = $file->type; // $_FILES["file"]["type"]
$path = $file->path; // $_FILES["file"]["tmp_name"]
$size = $file->size; // $_FILES["file"]["size"]
$data = file_get_contents($path);
} else {
// not uploaded.
}
}
public function myAction()
{
foreach ($this->request->getFiles() as $inputName => $file) {
if (!$file->isEmpty()) {
$data = $file->getContent();
} else {
// not uploaded.
}
}
}
ファイルオブジェクトは __toString()メソッド を実装しています。文字列表現はファイルデータとなります。