Laravel:当用户做某事时通知管理员

时间:2017-07-05 10:31:55

标签: php laravel authentication notifications

我会解释我的想法。我希望当默认用户执行操作时,管理员将通知此操作。为此,我在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>

我不知道我是否以更好的方式做到这一点,或者它是否有效,现在我有这个错误:

  

方法管理员不存在

但是我希望你帮助所有的过程而不仅仅是这个错误,因为我不知道我是否采取了正确的方式。

2 个答案:

答案 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()

但话又说回来,这取决于你如何设置你的管理员。