我会解释我的想法。我希望当默认用户执行操作时,管理员将通知此操作。为此,我在laravel中使用保存在数据库中的通知(我不知道是否更好的方法)。我的问题是我无法向管理员用户显示通知。
我希望当用户执行特定操作时,将通知所有管理员
$admins = Admin::all();<p>
foreach ($admins as $admin) {
<p>$admin->notify(new RepliedToThread($acao));<p>
}
接下来,我想在我的信息中心的导航栏上显示通知(只有管理员可以访问),为此我做了:
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
Notificações <span class="badge"> {{Auth::admin()->unreadNotifications() }}</span>
</a>
<ul class="dropdown-menu" role="menu"><p>
<li>
@foreach (Auth::admin()->unreadNotifications as $notification)
{{$notification->type}}
@endforeach
</li>
</ul>
</li>
我不知道我是否以更好的方式做到这一点,或者它是否有效,现在我有这个错误:
方法管理员不存在
但是我希望你帮助所有的过程而不仅仅是这个错误,因为我不知道我是否采取了正确的方式。
答案 0 :(得分:0)
关于该错误,在您的刀片模板中,您正在调用Auth :: admin(),并且Auth Facade上没有管理方法。如果通知对所有用户都是通用的,那么您应该能够执行Auth :: user() - &gt; unreadNotifications()(在您的用户模型上提供unreadNotifications方法)。
关于收听更改和通知管理员,我建议您查看事件,可以在Laravel网站上找到解释:https://laravel.com/docs/5.4/events
答案 1 :(得分:0)
如果您已设置管理员警卫,则可以使用:
Auth::guard('admin')->user()->unreadNotifications())
但是如果你使用的是默认的网络防护,那么你应该访问这样的未读通知:
$user->unreadNotifications()
但话又说回来,这取决于你如何设置你的管理员。