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

Laravel 5 のすべてのビューでデータを共有するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-01 02:36:08730ブラウズ

How Can I Share Data Across All Views in Laravel 5?

Laravel 5 のすべてのビューにデータを渡す

Laravel 5 では、さまざまな方法ですべてのビュー間でデータを共有できます。

方法 1: を使用するBaseController

Laravel のコントローラーを拡張する BaseController クラスを作成します。

class BaseController extends Controller
{
    public function __construct()
    {
        $data = [1, 2, 3];
        View::share('data', $data);
    }
}

他のすべてのコントローラーは BaseController から拡張する必要があります:

class SomeController extends BaseController {
    // ...
}

メソッド2: 使用するフィルター

app/filters.php または別のフィルター クラス ファイルでフィルターを作成します:

App::before(function($request) {
    View::share('data', [1, 2, 3]);
});

または、カスタム フィルターを定義します:

Route::filter('data-filter', function() {
    View::share('data', [1, 2, 3]);
});

次を使用して特定のルートにフィルターを適用しますRoute::filter().

メソッド 3: ミドルウェアを使用する

ミドルウェアを使用してビューにデータを渡す:

Route::group(['middleware' => 'SomeMiddleware'], function() {
    // Routes
});

class SomeMiddleware
{
    public function handle($request)
    {
        View::share('data', [1, 2, 3]);
    }
}

メソッド4: View Composer の使用

View を使用してデータをビューにバインドする作曲家。これにより、データを特定のビューまたはすべてのビューにバインドできます。

データを特定のビューにバインドするには、ViewComposer クラスを作成し、サービス プロバイダーに登録します。

// ViewComposer
use Illuminate\Contracts\View\View;

class DataComposer
{
    public function compose(View $view)
    {
        $view->with('data', [1, 2, 3]);
    }
}

// Service Provider
public function boot() {
    view()->composer('view-name', 'DataComposer');
}

バインドするにはデータをすべてのビューに送信するには、サービスで次のコードを使用しますプロバイダー:

view()->composer('*', 'DataComposer');

リファレンス:

  • [Laravel ドキュメント](https://laravel.com/docs/5.7/views#sharing-data) -すべてのビュー付き)
  • [Laracastエピソード](https://laracasts.com/learn/laravel/eloquent/making-models)

以上がLaravel 5 のすべてのビューでデータを共有するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。