仅针对某些路线的服务提供商-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'));

}

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


在特定路由上绑定Laravel服务提供商


但这仍然会在所有路线上加载服务提供商-只是推迟了View Composer(适用于OP的性能问题)。


泛舟湖上清波郎朗
浏览 150回答 1
1回答

蝴蝶刀刀

一个中间件是更好地为这种类型的东西,你可以把它应用到任何你想要的路线途径/组。
打开App,查看更多内容
随时随地看视频慕课网APP