繁体   English   中英

如何在 Laravel 中向当前未登录的用户发送通知?

[英]How can I send a notification in Laravel to a user that is not currently logged in?

我正在构建一个 Job Search 类型的应用程序。 有两种类型的用户,求职者和雇主,每个人都有自己的角色。 当雇主登录后,他可以浏览候选人的个人资料并请求面试。 他可以为时间和日期选择 2 个选项,然后单击发送。 当该特定用户登录时,我想在页面顶部显示带有铃铛图标的通知,并且通知应显示“您已收到面试请求!”。 然后,当他们单击它或转到管理面板上的“通知”部分时,它将显示雇主信息“您好,用户名,ABC 公司对您的个人资料感兴趣,并希望为您安排面试。” 带有 2 个日期和时间选项。 求职者选择日期和时间选项 1,点击发送,然后雇主会收到求职者的通知。 他们将通过这种方式进行沟通,直到双方就安排面试的日期和时间达成一致。 所以我想要 2 个通知。 1 当面试请求被发送给候选人时,第二次是当候选人选择一个对他有利的日期和时间并将请求发送回雇主时。 我了解如何在用户登录时发送通知,但我缺少有关如何向未登录用户发送通知的内容。 这两种类型的用户都存储在我的用户表中,只是角色不同。

job_seeker_profile.blade.php 文件:

{!! Form::open(['method'=>'POST', 'action'=>'AdminEmployerInterviewRequestsController@store', 'files'=>true, 'style'=>'width: 100%;']) !!}

<div class="form-group">
    <div class="input-group date" id="datetimepicker1" data-target-input="nearest">
        {!! Form::text('date_time1', null, ['class'=> $errors->first('date_time1') ? 'border-danger form-control datetimepicker-input' : 'form-control datetimepicker-input', 'data-target'=>'#datetimepicker1']) !!}
        <div class="input-group-append" data-target="#datetimepicker1" data-toggle="datetimepicker">
            <div class="input-group-text"><i class="fa fa-calendar"></i></div>
        </div><br>
    </div>
    <small class="text-danger">{{ $errors->first('date_time1') }}</small>
</div>
<div class="col">

</div>

<div class="form-group">
    <div class="input-group date" id="datetimepicker2" data-target-input="nearest">
        {!! Form::text('date_time2', null, ['class'=> $errors->first('date_time2') ? 'border-danger form-control datetimepicker-input' : 'form-control datetimepicker-input', 'data-target'=>'#datetimepicker2']) !!}
        <div class="input-group-append" data-target="#datetimepicker2" data-toggle="datetimepicker">
            <div class="input-group-text"><i class="fa fa-calendar"></i></div>
        </div><br>
    </div>
    <small class="text-danger">{{ $errors->first('date_time2') }}</small>
</div>

<div class="form-group">
    {!! Form::hidden('user_id', Auth::user()->id, ['class'=>'form-control']) !!}
</div>

<div class="form-group">
    {!! Form::hidden('job_seeker_profile_user_id', $jobSeekerProfile->id, ['class'=>'form-control']) !!}
</div>

<div class="form-group">
    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
    {!! Form::submit('Send Interview Request', ['class'=>'btn btn-primary float-right']) !!}
</div>
<br><br><br><br>

{!! Form::close() !!}

AdminEmployerInterviewRequestsController.php 文件:

public function store(EmployerInterviewCreateRequest $request)
{
    $input = $request->all();

    $user = Auth::user();

    $JobSeekerProfile = JobSeekerProfile::all();

    $user->interviewRequestsSent()->create($input);
    $user->interviewRequestsReceived()->create($input);

    $user->notify(new InterviewRequestSent());

    $JobSeekerProfile->notify(new InterviewRequestReceived());

    return redirect('/admin/employer/interviews');

}

但是当我打电话给

$JobSeekerProfile->notify(new InterviewRequestReceived());

它给了我这个错误:

Method Illuminate\Database\Eloquent\Collection::notify does not exist.

是否可以在采取行动后向其他用户发送通知?

现在不可能。 只有登录的用户才能收到通知。 我已经发送了几张关于这个的票

您的错误是因为您将每个JobSeekerProfile拉入一个集合,然后尝试在该集合上调用notify() 由于您正在提交 ID,只需使用它来构建一个实例并通知它。

public function store(EmployerInterviewCreateRequest $request)
{
    $input = $request->all();

    $user = Auth::user();

    $JobSeekerProfile = JobSeekerProfile::find($request->job_seeker_profile_user_id);

    $user->interviewRequestsSent()->create($input);
    $user->interviewRequestsReceived()->create($input);

    $user->notify(new InterviewRequestSent());

    $JobSeekerProfile->notify(new InterviewRequestReceived());

    return redirect('/admin/employer/interviews');

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM