Laravel 5.0 HTTPリクエスト

リクエストインスタンスの取得

ファサードによる取得

Requestファサードで、コンテナにより結合されている現在のリクエストへアクセスできます。例えば:

$name = Request::input('name');

名前空間下では、クラスファイルの初めにuser Request文により、Requestファサードをインポートする必要があることを覚えておいてください。

依存注入による取得

依存注入により、現在のHTTPリクエストインスタンスを取得するには、コントローラーのコンストラクターかメソッドで、タイプヒントにより指定します。現在のリクエストインスタンスは、サービスプロバイダーにより、自動的に注入されます。

<?php namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Routing\Controller;

class UserController extends Controller {

    /**
     * 新ユーザーの保存
     *
     * @param  Request  $request
     * @return Response
     */
    public function store(Request $request)
    {
        $name = $request->input('name');

        //
    }

}

もし、コントローラーメソッドで、ルートパラメーターも併用したい場合は、依存の指定の後にルート引数を続けてリストしてください。

<?php namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Routing\Controller;

class UserController extends Controller {

    /**
     * 指定したユーザーを更新する
     *
     * @param  Request  $request
     * @param  int  $id
     * @return Response
     */
    public function update(Request $request, $id)
    {
        //
    }

}

入力の取得

一つの値の取得

Illuminate\Http\Requestインスタンスのシンプルなメソッドを利用すれば、ユーザー入力の全てにアクセスできます。リクエストのHTTP動詞に気をもむ必要はありません。全ての動詞の入力に対し、同じ方法でアクセスできます。

$name = Request::input('name');

入力値が存在しない場合、デフォルト値を取得

$name = Request::input('name', 'Sally');

入力値が存在するか確認

if (Request::has('name'))
{
    //
}

リクエストの全入力取得

$input = Request::all();

指定したリクエスト入力のみ取得

$input = Request::only('username', 'password');

$input = Request::except('credit_card');

「配列」入力を使ったフォームを動作させる場合、ドット記法を使い、配列にアクセスできます。

$input = Request::input('products.0.name');

直前の入力

さらにLaravelでは、現在のリクエストの入力を次のリクエストに持ち越すこともできます。例えば入力をチェックし、バリデーションエラーがあった場合、フォームへ入力された値を再表示する必要があるでしょう。

フラッシュデーターをセッションへ保存

flashメソッドは、アプリケーションの次のリクエストでも、現在の入力へアクセスできるように、セッションへフラッシュデーターとして保存します。

Request::flash();

指定したデーターをフラッシュデーターとして保存

Request::flashOnly('username', 'email');

Request::flashExcept('password');

フラッシュデーターとリダイレクト

大抵の場合、前のページへのリダイレクトにフラッシュデーターを一緒に付けることが多いですから、リダイレクトにチェーンし、入力をフラッシュデーターとして保存できます。

return redirect('form')->withInput();

return redirect('form')->withInput(Request::except('password'));

直前の入力の取得

前のリクエストで保存したフラッシュデーターを取得するには、Requestインスタンスのoldメソッドを使用してください。

$username = Request::old('username');

Bladeテンプレートの中で、直前の入力を表示する場合は、oldヘルパを使い、便利に表示できます。

{{ old('username') }}

クッキー

Laravelフレームワークが作るクッキーは全部、認証プログラムにより署名・暗号化されています。つまりクライアント側で変更すると、無効なクッキーだと判断します。

クッキー値の取得

$value = Request::cookie('name');

新クッキーをレスポンスへ追加

cookieヘルパは、新しいSymfony\Component\HttpFoundation\Cookieインスタンスを生成する、シンプルなファクトリーとして動作します。そのクッキーは、withCookieメソッドを使用し、Responseインスタンスに付けます。

$response = new Illuminate\Http\Response('Hello World');

$response->withCookie(cookie('name', 'value', $minutes));

永遠に残るクッキーの作成

永遠とは、実際には5年間を意味しています。

$response->withCookie(cookie()->forever('name', 'value'));

クッキーのキュー

実際にレスポンスが生成される前の状態でも、送り返されるレスポンスにクッキーを付けるために、キュー(queue)しておくこともできます。

<?php namespace App\Http\Controllers;

use Cookie;
use Illuminate\Routing\Controller;

class UserController extends Controller
{
    /**
     * Update a resource
     *
     * @return Response
     */
     public function update()
     {
        Cookie::queue('name', 'value');

        return response('Hello World');
     }
}

ファイル

アップデートしたファイルの取得

$file = Request::file('photo');

ファイルがアップロードされたか確認

if (Request::hasFile('photo'))
{
    //
}

fileメソッドがリターンするのは、Symfony\Component\HttpFoundation\File\UploadedFileクラスのインスタンスで、PHPのSplFileInfoを拡張しています。それにはファイルに関する様々なメソッドが提供されています。

アップロードされたファイルが有効であるか確認

if (Request::file('photo')->isValid())
{
    //
}

アップロードファイルの削除

Request::file('photo')->move($destinationPath);

Request::file('photo')->move($destinationPath, $fileName);

その他のファイルメソッド

他にも様々なメソッドが、UploadedFileインスタンスに用意されています。更に知りたい場合は、このクラスのAPIドキュメントを確認してください。

その他

Requestクラスはアプリケーションに対するHTTPリクエストを調べるための多くのメソッドを提供しており、Symfony\Component\HttpFoundation\Requestを拡張しています。その特徴のいくつかをご覧ください。

リクエストされたURI取得

$uri = Request::path();

リクエストがAJAXであるか判別

if (Request::ajax())
{
    //
}

リクエストのメソッド取得

$method = Request::method();

if (Request::isMethod('post'))
{
    //
}

リクエスされたパスのパターンマッチング

if (Request::is('admin/*'))
{
    //
}

現在のリクエストURL取得

$url = Request::url();

ドキュメント章別ページ

Artisan CLI

ヘッダー項目移動

注目:アイコン:ページ内リンク設置(リンクがないヘッダーへの移動では、リンクがある以前のヘッダーのハッシュをURLへ付加します。

移動

クリックで即時移動します。

設定

適用ボタンクリック後に、全項目まとめて適用されます。

カラーテーマ
和文指定 Pagination
和文指定 Scaffold
Largeスクリーン表示幅
インデント
本文フォント
コードフォント
フォント適用確認

フォントの指定フィールドから、フォーカスが外れると、当ブロックの内容に反映されます。EnglishのDisplayもPreviewしてください。

フォント設定時、表示に不具合が出た場合、当サイトのクッキーを削除してください。

バックスラッシュを含むインライン\Code\Blockの例です。

以下はコードブロックの例です。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * ユーザに関連する電話レコードを取得
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

設定を保存する前に、表示が乱れないか必ず確認してください。CSSによるフォントファミリー指定の知識がない場合は、フォントを変更しないほうが良いでしょう。

キーボード・ショートカット

オープン操作

PDC

ページ(章)移動の左オフキャンバスオープン

HA

ヘッダー移動モーダルオープン

MS

移動/設定の右オフキャンバスオープン

ヘッダー移動

T

最初のヘッダーへ移動

E

最後のヘッダーへ移動

NJ

次ヘッダー(H2〜H4)へ移動

BK

前ヘッダー(H2〜H4)へ移動

その他

?

このヘルプページ表示
閉じる