Laravel 5 中向所有視圖傳遞資料
在Laravel 5 中,可以透過多種方式實現所有視圖之間的資料共享。
方法一:使用BaseController
建立一個擴展 Laravel 控制器的 BaseController 類別。
class BaseController extends Controller { public function __construct() { $data = [1, 2, 3]; View::share('data', $data); } }
所有其他控制器都應該從BaseController 擴展:
class SomeController extends BaseController { // ... }
方法2:使用過濾器
建立過濾器/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(將過濾器套用於特定路由).
方法三:使用中間件
使用中間件將資料傳遞到視圖:
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 5 中的所有視圖之間共用資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!