Laravel 5 のビュー間でのデータ共有: 総合ガイド
はじめに
すべてのビューでデータにアクセスできるように、Laravel 5 ではさまざまな方法が提供されています。アプリケーションに最適なアプローチを見つけるためにそれらを調べてみましょう。
BaseController の使用
Laravel のコントローラーを拡張する BaseController を作成し、そこにグローバル データを設定します。他のすべてのコントローラーは、この BaseController から継承し、共有データを継承できます。
class BaseController extends Controller { public function __construct() { // Example data object $user = User::all(); // Share it with all views View::share('user', $user); } }
フィルターの使用
すべてのビューに対して特定の設定が必要な場合は、次のことができます。各リクエストの前に実行されるフィルターを使用します。これは通常、ユーザー認証を処理するために使用されます。
App::before(function($request) { // Share the user data View::share('user', User::all()); });
または、カスタム フィルターを作成してルート内で呼び出すこともできます。
Route::filter('user-filter', function() { View::share('user', User::all()); });
ミドルウェアの紹介
Laravel 5.* 以降、ミドルウェアはデータ共有の代替方法を提供します。カスタム ミドルウェアを作成し、View::share メソッドを使用してデータを共有できます。
Route::group(['middleware' => 'SomeMiddleware'], function(){ // Routes }); class SomeMiddleware { public function handle($request) { \View::share('user', auth()->user()); } }
View Composer を使用する
View Composer により、特定のデータをビューにバインドできます。これは、個々のビューに対して行うことも、すべてのビューに対してまとめて行うこともできます。データをすべてのビューにバインドする例を次に示します。
// Service Provider namespace App\Providers; class ViewComposerServiceProvider extends ServiceProvider { public function boot() { view()->composer('*', 'App\Http\ViewComposers\TestViewComposer'); } } // ViewComposer namespace App\Http\ViewComposers; class TestViewComposer { public function compose(View $view) { $view->with('ViewComposerTestVariable', "Shared using View Composer"); } } // View {{ $ViewComposerTestVariable }}
結論
これらのメソッドは、Laravel 5 のビュー間でデータを共有するためのさまざまなオプションを提供します。プロジェクトの要件に最も適合し、ビュー全体で一貫したデータを簡単に維持できます。
以上がLaravel 5 の複数のビュー間でデータを効率的に共有するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。