Laravel_基础_view共享数据

1.所有视图共享数据(share)

当所有视图都需要同一个数据时,使用视图工厂的share方法。

全局帮助函数view,如果传入参数,则返回Illuminate\View\View实例,不传入参数则返回Illuminate\View\Factory实例。所以我们可以通过在服务提供者(app\Providers\AppServiceProvider.php)的boot方法中使用如下方式实现视图间共享数据:


    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //视图间共享数据
        view()->share('share','share');
    }


然后在你的任何一个视图文件中这样写:


{{ $share }}

就会输出这个变量。


2.部分视图共享数据(Composer)

当一部分视图文件中需要同一个数据的时候,比如登录信息,可以通过视图工厂的composer方法实现。

简单起见,我们还是基于AppServiceProvider,不去单独创建服务提供者。


    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //视图间共享数据
        view()->share('share','share');
        //视图Composer
        view()->composer('admin',function($view){
            $view->with('user',array('name'=>'lili','age'=>'18'));
        });
    }


这样,在admin视图模板文件中就可以使用一下代码来输出。


{{ $user['name'] }}
{{ $user['age'] }}


你也可以传递数据到多个视图:


view()->composer(['hello','home'],function($view){
    $view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));
});

甚至所有视图(使用通配符*):


view()->composer('*',function($view){
    $view->with('user',array('name'=>'test','avatar'=>'/path/to/test.jpg'));
});


评论 (1)

  • XX Reply

    比较详细

    Jul 24 2020 05:27 pm

发表评论