laravel - Laravel 在哪里放置一个数据库函数以包含在所有页面(路由)中?
问题描述
我有一个 laravel 应用程序,它已经有几个路由、一些控制器和这些控制器内部的一些功能。
我想要做的是从数据库中获取一些数据并希望在所有页面(路由)中使用这些数据。
function getNotifications()
{
$notifications = Notification::all();
return $notifications;
}
我想在所有页面(路由)中使用$notifications 。我应该把那个功能放在哪里?我也想遵循 DRY 原则。所以我把这个函数放在中间件中,它就可以工作了。但我看到建议中间件不应该用于这种目的。我认为辅助功能也不是要走的路。
任何想法?
我希望你能理解我的问题。我首先编写了所有其他功能,最后编写了通知功能。通知需要显示在所有页面中。
解决方案
你需要的是一个 Laravel 视图作曲家
class UserComposer
{
public function compose(View $view)
{
$user = Auth::user();
$view->with([
'user' => $user,
'notifications' => $user ? $user->unreadNotifications : null,
]);
}
}
在 ComposerServiceProvider 的 boot 方法中
View::composer(
'*',
\App\Http\ViewComposers\UserComposer::class
);
现在您可以在所有视图中访问 $notifications
推荐阅读
- javascript - 根据“路径”获取 Objet 的值
- mysql - SQL 创建连续日期偶数为 0
- javascript - Prisma.io ORM 自对多关系生成唯一密钥
- python - 按钮参数只显示最后一个按钮,而不是按下的按钮(python,tkinter)
- kotlin - 如何使用牙签注释实现范围单例?
- python - 在指定字符串之间使用正则表达式提取数据
- c++ - cfapi: CfDehydratePlaceholder 似乎被卡住了
- vue.js - vue3组合api中的vuex模块axios
- java - 将 Spring 应用程序重新连接到 Kafka Brokers 以生成消息
- javascript - 没有找到 JQuery .autocomplete?