Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 用于基础布局的Laravel全局变量_Php_Laravel_Model View Controller_Controller_Laravel 5.2 - Fatal编程技术网

Php 用于基础布局的Laravel全局变量

Php 用于基础布局的Laravel全局变量,php,laravel,model-view-controller,controller,laravel-5.2,Php,Laravel,Model View Controller,Controller,Laravel 5.2,我想在每一页上都展示一些东西,比如$gameAccounts=Auth::user()->gameAccounts()->get() 在每页上全局显示此变量的最佳方法是什么?对于共享功能,我建议编写一个。该特性可以在整个控制器中使用,并为所有控制器提供相同的功能 示例: trait GameSettingsTrait { public function getUserGameAccounts() { return Auth::user()->gameAcc

我想在每一页上都展示一些东西,比如
$gameAccounts=Auth::user()->gameAccounts()->get()


在每页上全局显示此变量的最佳方法是什么?

对于共享功能,我建议编写一个。该特性可以在整个控制器中使用,并为所有控制器提供相同的功能

示例:

trait GameSettingsTrait 
{
    public function getUserGameAccounts()
    {
        return Auth::user()->gameAccounts()->get();
    }
}
在控制器中,执行以下操作:

class IndexController extends Controller
{
    use GameSettingsTrait;

    ...

另一种方法是将逻辑放在
app/Http/Controllers/controller.php
中的基本控制器中。顺便说一句,您可以看到它已经将traits用于其他功能。

您需要使用view composer

看看医生


使用视图生成器是最好的方法。 只需将以下行添加到AppServiceProvider.php内部引导方法:

public function boot()
{
    //

    view()->composer('*', function ($view) {
        $view->with('user', Auth::user()->gameAccounts()->get());
    });
}

如果仅在视图中需要它,则可以在
AppServiceProvider中使用视图生成器

public function boot()
{
    View::composer('layouts.base', function ($view) {
        $view->with('gameAccounts', Auth::user()->gameAccounts);
    });
}

如果您在全球范围内需要它,您可以将其存储在配置中,也可以存储在
AppServiceProvider

中。我想您误解了我的意思。我想通过基本布局访问该变量,以便在我拥有的每个视图中使用它。您不能使用
'*'
,每个视图都将运行
Auth::user()->gameAccounts()->get()
。您必须指定基本布局/模板视图。