如何在视图中共享变量
假设管理后台有一个字段是
site_name
用户可以随意修改,前端页面如何在所有视图中引用它?总不能每次都查询并向视图传参site_name
我们可以在 AppServiceProvider
分配视图共享变量
// app/Providers/AppServiceProvider.php
class AppServiceProvider extends ServiceProvider
{
...
public function boot()
{
$site_name = "learnku";
view()->share('name', $site_name);
}
...
}
这样就可以在所有的视图中使用 site_name
变量了。类似 站点名称
和 版权信息
这类数据可以使用这种全局定义,因为站点中所有页面都会用到它们。
但是类似边栏 推荐资源
这类数据,大部分页面也会使用它们,但并不是所有页面都会使用,如果使用全局定义,就有些没必要了。
我们可以把 边栏 推荐资源
先定义成子视图 sidebar.blade.php
,然后使用 view()->composer()
闭包方法向 sidebar
中传递数据,这样每当调用 sidebar
这个视图时,就会自动加载相关数据
class AppServiceProvider extends ServiceProvider
{
...
public function boot()
{
view()->composer('sidebar', function($view){
$view->with('recommoned', Recommoned::get());
});
}
...
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: