如何在视图中共享变量

假设管理后台有一个字段是 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 协议》,转载必须注明作者和本文链接
悲观者永远正确,乐观者永远前行。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!