反复减少粘贴代码的策略

时间:2018-10-23 01:58:32

标签: php laravel

在laravel中,我有一个侧边栏,显示用户的每日条目计数

在每个控制器功能中,由于必须始终显示侧边栏,因此我必须具备以下条件。

$data['entry_count_today'] = Data_group1::TodayCount('group1', Auth::user()->id)->count();

必须要有一种更好的方法,而不是仅将其粘贴到每个函数中,就可以在整个控制器中使用它。

建议?

1 个答案:

答案 0 :(得分:1)

您可以创建自定义中间件并将数据共享到所需的任何视图。

php artisan make:middleware Sidebar

在生成的中间件句柄函数中添加以下内容:

$data['entry_count_today'] = Data_group1::TodayCount('group1', Auth::user()->id)->count();

\View::share('data', $data);

return $next($request);

将中间件添加到Kernel.php中的$ routeMiddleware数组中:

protected $routeMiddleware = [
    ...
    'sidebar' => \App\Http\Middleware\Sidebar::class,
    ...
];

最后在您的路由文件夹web.php中:

Route::group(['middleware' => ['sidebar']], function(){
//add routes you want the data to be passed on
});

在视图中,您可以使用$data['entry_count_today']

访问数据