laravel - 所有 Controller 和 View 的全局变量

标签 laravel laravel-4 global-variables

在 Laravel 中,我有一个表设置,并且我已从 BaseController 中的表中获取完整数据,如下所示

public function __construct() 
{
    // Fetch the Site Settings object
    $site_settings = Setting::all();
    View::share('site_settings', $site_settings);
}

现在我想访问$site_settings。在所有其他 Controller 和 View 中,这样我就不需要一次又一次地编写相同的代码,所以任何人请告诉我解决方案或任何其他方式,以便我可以从表中获取数据一次并在所有 Controller 中使用它查看。

最佳答案

好吧,我将完全忽略其他答案中普遍存在的荒谬的过度工程和假设,并选择简单的选项。

如果您同意在每个请求期间有一个数据库调用,那么该方法很简单,令人担忧的是:

class BaseController extends \Controller
{

    protected $site_settings;

    public function __construct() 
    {
        // Fetch the Site Settings object
        $this->site_settings = Setting::all();
        View::share('site_settings', $this->site_settings);
    }

}

现在假设所有 Controller 都扩展此 BaseController,他们只需执行 $this->site_settings 即可。

如果您希望限制多个请求之间的查询量,您可以使用前面提供的缓存解决方案,但根据您的问题,简单的答案是类属性。

关于laravel - 所有 Controller 和 View 的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25189427/

相关文章:

php - 向 Laravel 5 调度程序添加自定义方法

php - Laravel 5.6 查询生成器总和

mysql - 如何将同一个表中的多行合并为 1 行,在 sql 连接中使用 laravel 查询生成器的不同列

php - 我可以在哪里放置 laravel 4 过滤器类?

c++ - 我应该将我的对象声明为全局的还是静态的?

php - 在 Laravel 中对多个子记录使用 createOrUpdate

php - 尝试使用终端打开 laravel 的文件结构时无法获取引用控制台的文件描述符

MySQL SUM、JOIN 和 GROUP BY...正确的结构

java - 是否可以使用 GWT 在浏览器缓存中存储变量(最好是字符串)?

c++ - 如何组织输入全局变量?