Laravel,在管理路线上需要变量

时间:2018-04-30 14:34:32

标签: laravel-5

我需要一个变量用于我的管理仪表板,所以我的猜测是将一些东西放在缓存中,这样我就可以在管理布局模板中访问它。 我需要将2个配置文件与链接合并:

$dashboard_links = \Auth::user()->hasRole(['root', 'admin'])
    ? config('dashboard')
    : config('dashboard-user');
$taxonomies = Config::get('taxonomies');

foreach ($taxonomies as $name => $config)
{
    $original_array = array_splice( $dashboard_links, $config['order'], 0 );
    $dashboard_links = array_merge ($original_array, [$name => $config], $dashboard_links); 
}

我希望基本模板“resources / views / layouts / master.blade.php”中提供$dashboard_links。 但我不想在每个页面请求上创建变量或将其放在每个控制器中。仅当有人以管理员身份登录并访问任何管理页面时才需要它。 我在编程方面不是很好,所以我不知道什么是最好的方法。 如果有帮助,这些是我的路线:

Route::group(['middleware' => ['role:admin']], function()
{
    // edit post form
    Route::get('post/edit/{slug}', [
        'as'    => 'post-edit',
        'uses'  => 'Post\AdminController@edit'
    ]);

        Route::get('medialibrary/edit/{id}', [
        'as'    => 'media-edit',
        'uses'  => 'MediaLibrary\MediaController@edit',
    ])->where('id', '[0-9]+');

    // and so on...
});

1 个答案:

答案 0 :(得分:2)

您应该考虑使用视图编辑器https://laravel.com/docs/5.6/views#view-composers

视图编辑器允许您将变量传递给与编辑器关联的所有视图。

因此,您将注册一个新的服务提供商,以将您的作曲家与特定路线相关联。然后在你的作曲家中弹出变量,并将其传递给所有管理员视图。