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:使用过滤器
创建过滤器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( 将过滤器应用于特定路由).
方法三:使用中间件
使用中间件将数据传递到视图:
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中文网其他相关文章!