Laravel5.1学習ノート6応答

10931 ワード

  • きほんおうとう
  • ヘッダ情報を応答
  • に付加する.
  • 応答
  • にCookieを追加
  • その他の応答
  • View応答
  • JSON応答
  • Fileダウンロード
  • リダイレクト
  • はネーミングルーティング
  • にリダイレクトする.
  • は、コントローラAction
  • にリダイレクトする.
  • フラッシュバックセッションデータ付きリダイレクト
  • レスポンスマクロ

  •  
    #基本応答
    ルートから文字列を返す
    最も基本的な応答は、Laravelのルーティングから文字列を返すことです.
    Route::get('/', function()
    {
    return 'Hello World';
    });

    カスタムレスポンスの作成
    しかし、ほとんどのルーティングおよびコントローラが実行する動作では、完全なIlluminate\Http\Responseインスタンスまたは表示を返す必要があります.完全なResponseインスタンスを返すと、応答のHTTPステータスコードと応答ヘッダをカスタマイズできます.Responseの例はSymfony\Component\HttpFoundation\Responseクラスを継承し、HTTP応答を確立するための多くの方法を提供する.
    use Illuminate\Http\Response;

    Route::get('home', function () {
    return (new Response($content, $status))
    ->header('Content-Type', $value);
    });

    便宜上、補助方法responseを使用することができます.
    Route::get('home', function () {
    return response($content, $status)
    ->header('Content-Type', $value);
    });

    ヒント:Responseメソッドに関する完全なリストは、APIドキュメントおよびSymfony APIドキュメントを参照することができる.
     
    #応答にヘッダ情報を追加
    多くの応答メソッドがチェーン呼び出しであることを覚えておいて、スムーズな応答を確立します.次のようになります.
    return response($content)
    ->header('Content-Type', $type)
    ->header('X-Header-One', 'Header Value')
    ->header('X-Header-Two', 'Header Value');

    ♪Cookieを応答に添付(ここではくだらない話を省いて、コードを直接見て理解しても、幽霊のドキュメントがこんなに多いくだらない話を理解していません)
    return response($content)->header('Content-Type', $type)
    ->withCookie('name', 'value');

    withCookieメソッドは、Cookieのプロパティをカスタマイズできるように、より多くのオプションの引数を受け入れます.
    ->withCookie($name, $value, $minutes, $path, $domain, $secure, $httpOnly)

    デフォルトのすべてのcookiesはLaravelで暗号化され、署名されています.これにより、お客様が勝手に変更することはできません.一部のCookiesを暗号化したくない場合は、App\Http\Middleware\EncryptCookiesミドルウェアの$exceptプロパティを使用できます.
    /**
    * The names of the cookies that should not be encrypted.
    *
    * @var array
    */
    protected $except = [
    'cookie_name',
    ];

    #その他の応答タイプ
    補助方法responseを使用すると、他のタイプの応答インスタンスを容易に生成することができる.補助メソッドresponseを呼び出し、パラメータを持たない場合、Illuminate\Contracts\Routing\ResponseFactory Contractのインプリメンテーションが返されます.このContractは応答を生成するためのいくつかの有用な方法を提供する.
    Viewレスポンス
    応答状態と応答ヘッダを制御する必要がある場合、応答内容としてviewを返す必要がある場合は、viewメソッドを使用します.
    return response()->view('hello', $data)->header('Content-Type', $type);

    カスタムHTTPステータスを転送したり、ヘッダ情報をカスタマイズしたりする必要がない場合は、グローバルViewアシストメソッドを使用します.
     
    JSON応答の確立jsonメソッドは、応答ヘッダのContent-Typeapplication/json,に自動的に構成し、所定のarray配列をJSONに同時に変換し、json_Encode PHPメソッド
    return response()->json(['name' => 'Abigail', 'state' => 'CA']);

    JSONP応答の確立
    return response()->json(['name' => 'Abigail', 'state' => 'CA'])
    ->setCallback($request->input('callback'));

    ファイルダウンロードの応答の確立
    1番目のパラメータは指定されたダウンロードディレクトリで、2番目は保存されたファイル名で、3番目はHTTPヘッダ情報です.
    return response()->download($pathToFile);

    return response()->download($pathToFile, $name, $headers);

    return response()->download($pathToFile)->deleteFileAfterSend(true);

    Note: Symfony HttpFoundation, which manages file downloads, requires the file being downloaded to have an ASCII file name.
     
     
    #リダイレクト
     
    リダイレクト応答は、通常、クラスIlluminate\Http\RedirectResponseの例であり、ユーザが別のURLにリダイレクトするために必要な応答ヘッダを含む.リダイレクトRedirectResponseインスタンスを生成する方法はいくつかありますが、最も簡単な方法はグローバルredirectアシストメソッドを使用することです.
    Route::get('dashboard', function () {
    return redirect('home/dashboard');
    });
    フォームのコミットに失敗したなど、ユーザーを前の場所にリダイレクトしたい場合は、グローバルに使用できます.
    backアシストメソッド
    Route::post('user/profile', function () {
    // Validate the request...

    return back()->withInput();
    });

    リダイレクトに戻るRedirectResponseの例を生成するいくつかの方法があり、最も簡単な方法は補助方法redirectを透過することである.テスト時に、シミュレーションリダイレクト応答を確立するテストは一般的ではないので、補助方法を使用することは通常可能です.
    return redirect('user/login');

    ルーティング名によるリダイレクトを返します
    補助メソッドredirectを呼び出し、パラメータを持たない場合、Illuminate\Routing\Redirectorのインスタンスが返され、そのインスタンスに対して任意のメソッドを呼び出すことができます.たとえば、RedirectResponseからルーティング名を生成するには、routeメソッドを使用します.
    return redirect()->route('login');

     
    ルーティングにパラメータがある場合は、2番目の引数として渡すことができます.
    义齿
    // For a route with the following URI: profile/{id}

    return redirect()->route('profile', [1]);

     
    IDパラメータがEloquentモデルに含まれるルーティングにリダイレクトする場合は、Model自体を渡すことができ、IDが自動的に抽出されます.
    return redirect()->route('profile', [$user]);

    コントローラの動作によるリダイレクトを返しますRedirectResponseのインスタンスを生成し、ルーティング名にリダイレクトできる以上、コントローラアクションにリダイレクトすることもできる.
    return redirect()->action('App\Http\Controllers\HomeController@index');
    
    

    ヒント:URL::setRootControllerNamespaceでルートコントローラのネーミングスペースを登録した場合は、action()メソッド内のコントローラに完全なネーミングスペースを指定する必要はありません.action()メソッド内のコントローラは、完全なネーミングスペースを指定します.action()メソッド内のコントローラは、完全なネーミングスペースを指定します.
     
    コントローラの動作に従ったリダイレクトを返し、パラメータに値を割り当てます.
    return redirect()->action('UserController@profile', [1]);

    コントローラの動作に従ったリダイレクトを返し、特定の名前パラメータに値を割り当てます.
    return redirect()->action('App\Http\Controllers\UserController@profile', ['user' => 1]);

    リダイレクトを返し、フラッシュデータ(Flash Data)を追加
    通常、新しいURLにリダイレクトするとデータを一度に保存になります.便宜上、メソッド接続を使用してRedirectResponseのインスタンスを作成し、データを使い捨てSessionに保存することができます.
    Route::post('user/profile', function () {
    // Update the user's profile...

    return redirect('dashboard')->with('status', 'Profile updated!');
    });