1.所有视图共享数据(share)
当所有视图都需要同一个数据时,使用视图工厂的share方法。
全局帮助函数view,如果传入参数,则返回IlluminateViewView实例,不传入参数则返回IlluminateViewFactory实例。所以我们可以通过在服务提供者(appProvidersAppServiceProvider.php)的boot方法中使用如下方式实现视图间共享数据:
代码语言:javascript复制 /**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//视图间共享数据
view()- share('share','share');
}
然后在你的任何一个视图文件中这样写:
代码语言:javascript复制{{ $share }}
就会输出这个变量。
2.部分视图共享数据(Composer)
当一部分视图文件中需要同一个数据的时候,比如登录信息,可以通过视图工厂的composer方法实现。
简单起见,我们还是基于AppServiceProvider,不去单独创建服务提供者。
代码语言:javascript复制 /**
* 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视图模板文件中就可以使用一下代码来输出。
代码语言:javascript复制{{ $user['name'] }}
{{ $user['age'] }}
你也可以传递数据到多个视图:
代码语言:javascript复制view()- composer(['hello','home'],function($view){
$view- with('user',array('name'= 'test','avatar'= '/path/to/test.jpg'));
});
甚至所有视图(使用通配符*):
代码语言:javascript复制view()- composer('*',function($view){
$view- with('user',array('name'= 'test','avatar'= '/path/to/test.jpg'));
});
以上这篇Laravel基础_关于view共享数据的示例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考。