ホームページ > バックエンド開発 > PHPチュートリアル > Laravel 5 の複数のビュー間でデータを効率的に共有するにはどうすればよいですか?

Laravel 5 の複数のビュー間でデータを効率的に共有するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-30 16:39:15
オリジナル
335 人が閲覧しました

How Can I Efficiently Share Data Across Multiple Views in Laravel 5?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート