Laravel View ::分享

时间:2015-03-06 08:59:30

标签: php laravel laravel-4 global-variables blade

尝试找出一种在不实际创建全局变量的情况下使用全局变量的方法。

我正在开发一个框架,我将用于所有未来的项目,并希望有一个包含网站更改功能的数据库表(网站名称,颜色,徽标链接等)

如果我没有使用Laravel,我会在我的标题包含一个函数文件中设置一个包含所有这些值的数组,以便我可以调用它。

<?= $constants['business_name] ?>

在Laravel中,我可以创建一个函数来获取一个名称然后返回值,但似乎过多地浪费了db调用。

我找到了:

View::share

但是我得到了变量未定义的错误。

试过这个:

public function __construct()
{
    $constants = DB::table('constants')->get();
    return $constants;
    View::share('constants', $constants);
}

在我的BaseController中但显示错误,有什么想法吗?

1 个答案:

答案 0 :(得分:2)

甚至在调用View::share()

之前从构造函数返回
public function __construct()
{
    $constants = DB::table('constants')->get();
    return $constants;  // <<<<<<
    View::share('constants', $constants);
}

实际上构造函数永远不应该返回一些内容,因此删除该行将执行:

public function __construct()
{
    $constants = DB::table('constants')->get();
    View::share('constants', $constants);
}

您可能还需要查看视图编辑器,以便在不需要构造函数的情况下使数据全局可用:

View composers - Laravel docs