Laravel框架给多个视图分配数据(5.5适用)
编辑时间:2017-09-11 作者:jack
## Laravel框架给多个视图分配数据(5.5适用) 在项目中多个视图都使用到同一个数据,这是一个非常常见的一个需求。比如在由于前台的首页、商品详情页的头部都是公用的,需要就意味着首页视图、商品详情页视图都需要分配头部的数据。这个时候就需要给多个视图分配数据了。 ## 步骤如下 * 以下假设需要将数据共享给Home/index以及Home/user视图 - a. 创建服务提供者 //这条命令会在app/Providers目录创建ShareUserDataProvider.php php artisan make:provider ShareUserDataProvider - b. 将上一步创建好的服务提供者,添加到配置文件中 在config.php/app.php配置文件中, > 'providers' => [ > // 其他服务提供器 > > App\Providers\ShareUserDataProvider::class, > ], - c. 在ShareUserDataProvider类文件中的boot方法 > use Illuminate\Support\Facades\View; > > //Home/index,Home/user都是视图名 > View::composer( > ['Home/index', 'Home/user'], 'App\Http\ViewComposers\ProfileComposer' > ); - d. 创建App\Http\ViewComposers\ProfileComposer - d-1. 在app/Http目录下创建一个ViewComposers目录 mkdir ViewComposers ` - d-2. 在ViewComposers目录下创建ProfileComposer文件 touch ProfileComposer.php <?php namespace App\Http\ViewComposers; use Illuminate\View\View; use App\Http\Controllers\Api\Index; class ProfileComposer { protected $user; public function __construct(Index $index) { $this->user = $index; } /** * 绑定数据到视图. * * @param View $view * @return void */ public function compose(View $view) { ////在视图中使用{{$count}}拿到aa $view->with('count', 'aa'); ////拿到UserApi类的test()方法的返回数据,并且分配到模板 $view->with('userdata', $this->user->test() ); } } * `//视图被渲染前,Composer 类的 compose 方法被调用,同时 Illuminate\View\View 实例被注入该方法,从而可以使用其 with 方法来绑定数据到视图。`
来说两句吧
最新评论