仅针对某些路线的服务提供商-Laravel

时间:2019-04-19 16:09:32

标签: php laravel

我正在laravel中构建页面构建器。前端呈现添加到我的管理员页面中的“块”。我认为确保这些块在我需要的任何地方都可用的最佳方法是将它们加载到View Composer中,效果很好;

View::composer('*', function ($view) {
    $blocks = Page::where('url', url()->current());

    return view()->with(['blocks', $blocks]);
});

但是,这会尝试加载前端路由和管理路由的块。有什么方法可以确保只为前端的路由加载它们?

我已将路线分成这样的单独文件;

// lets me use an admin.php for my admin routes, instead of web.php
$this->mapAdminRoutes();

protected function mapAdminRoutes()
{
    Route::prefix('admin')
         ->middleware('admin')
         ->namespace($this->namespace)
         ->group(base_path('routes/admin.php'));
}

我在谷歌搜索时确实发现了这个问题

  

Binding a Laravel service provider on specific routes

但是这仍然会在所有路线上加载服务提供商-只是推迟了View Composer(它可以解决OP性能问题)。

1 个答案:

答案 0 :(得分:1)

middleware更适合此类情况,因为您可以将其应用于所需的任何路由/路由组。