1. ホーム
  2. laravel

[解決済み] すべてのコントローラとビューのグローバル変数

2022-02-12 12:54:02

質問

Laravelでは、テーブル設定があり、以下のようにBaseControllerでテーブルから完全なデータを取得しました。

public function __construct() 
{
    // Fetch the Site Settings object
    $site_settings = Setting::all();
    View::share('site_settings', $site_settings);
}

そこで、他のコントローラやビューで$site_settings.にアクセスし、同じコードを何度も書く必要がないようにしたいのですが、どなたか解決策や他の方法を教えてください。

どのように解決するのですか?

このような場合、まず、設定ファイルを使うのが適切ですが、以下のような方法もあります(Laravel - 4)。

// You can keep this in your filters.php file
App::before(function($request) {
    App::singleton('site_settings', function(){
        return Setting::all();
    });

    // If you use this line of code then it'll be available in any view
    // as $site_settings but you may also use app('site_settings') as well
    View::share('site_settings', app('site_settings'));
});

どのコントローラでも同じデータを取得できるようにするには

$site_settings = app('site_settings');

いろいろな方法があるので、どれを使うか、好きな方を使えばいいのですが、私は Container .