3分钟短文 | Laravel 给所有视图追加公共数据
引言 这又是一个深入laravel运行方式的问题,面对数百张页面,不可能所有的简单的页面 复杂的页面都继承了某些公用的layout数据。那么如何做到给所有视图都追加公共数据呢?本文就来说一说。 学习时间 比如文档中所说,可以用view对象的share方法分享全局通用数据。代码像下面这样: View::share('data', [1, 2, 3]); 如果仅是指定控制器,或者路由的页面才会追加公用数据,可以在声明控制器的基类, 并在基类内注入公用数据。 class BaseController extends Controller { public function __construct() { $user = User::all(); View::share('user', $user); // 共享数据 } } 在需要使用公用数据的控制上,使其继承 BaseController 就可以了。 如果在某个应用的整个生命周期,你需要对所有的请求都要追加公用数据,那么可以这应用加载之前, 就将数据暴露出来。 App::before(function($request) { View::share('user', User::all()); }); 或者我们直接在路由阶段进行注入: Route::filter('user-filter', function() { View: