Laravel 5.5为每个页面自动加载一个函数,而不为每个控制器调用该函数

时间:2018-05-28 08:28:22

标签: laravel laravel-5

我要为每个用户创建一个动态左侧导航(菜单)。我已经创建了相同的数据库表。此外,我已根据用户登录生成菜单结构。左侧导航位于部分视图(leftnav.blade.php)。我目前正在将左侧导航数据(从数据库值生成)传递给视图,如:

$data['tree'] = $this->generateSiteTree(0); // left nav generated
$data['bla] = 'bla bla etc';
return view('Administrator.permission.index', $data);

但是,我不希望通过为另一个控制器再次编写相同的代码来单独为每个页面生成菜单结构。 我知道如何创建Helper功能。 我的问题是 - 如何为每个页面自动调用函数?

2 个答案:

答案 0 :(得分:3)

您可以创建一个视图编辑器,以便在左侧导航中仅填充您的数据。请参阅此文档:https://laravel.com/docs/5.5/views#view-composers

app/Providers/AppServiceProvider.php中,在启动功能中插入此代码:

View::composer('leftnav', function ($view) {
    $view->with('tree', $this->users->count());
});

别忘了把它放在最上面:

use Illuminate\View\View;

答案 1 :(得分:2)

使用https://laravel.com/docs/5.6/views#sharing-data-with-all-views

public function boot()
    {
        View::share('tree', $this->generateSiteTree(0));
        View::share('bla', 'bla bla etc');
    }