将变量从控制器传递到Laravel中的通知

将变量从控制器传递到Laravel中的通知,laravel,notifications,Laravel,Notifications,我发现很难理解从文档到场景的例子。在我的项目中,我有一个由用户填写的申请表,然后管理员将在申请被批准、取消等后更新该表 现在我想通知用户,她/他的申请已被批准、取消等 在我的控制器中: public function update(Request $request, $id) { $this->validate($request, [ 'status' => 'required' ]); $requestData = $request->

我发现很难理解从文档到场景的例子。在我的项目中,我有一个由用户填写的申请表,然后管理员将在申请被批准、取消等后更新该表

现在我想通知用户,她/他的申请已被批准、取消等

在我的控制器中:

public function update(Request $request, $id)
{
    $this->validate($request, [
        'status' => 'required'
    ]);
    $requestData = $request->all();

    $loanapplication = LoanApplication::findOrFail($id);

    $loanapplication->update([
        "status"        => $request->status,
        "admin_notes"   => $request->admin_notes,
        "date_approval" => $request->date_approved
    ]);    

    if($request->notifyBorrower = 'on') {

        $user_id = $loanapplication->user_id;
        $status = $request->status;
        $this->notify(new AdminResponseToApplication($user_id));   
    }

    return redirect()->back()->with('flash_message', 'LoanApplication updated!');
}
在我的AdminResponseToApplication.php中,我希望实现这一点

<?php
namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;

class AdminResponseToApplication extends Notification implements ShouldQueue
{
    use Queueable;  
    public function __construct()
    {
        //
    }

    public function via($notifiable)
    {
        return ['mail','database'];
    }

    public function toMail($notifiable)
    {
        return (new MailMessage)
            ->line(.$user->nameHere. 'your application has been '.$statusHere.'.')
            ->action('check it out', url('/'))
            ->subject('Regarding with your loan application')
            ->line('This is system generated. Do not reply here.');
    }

    public function toDatabase($notifiable)
    {
        return [
            'user_id' => $user->nameHere,
            'status' => $statusHere,
            'title' => .$user->nameHere. 'your application has been '.$statusHere.'.',
            'url' => '/'
        ];
    }
}

获取用户对象并对其调用函数notify()$此->notify()将不起作用,因为$this不是用户类的实例

$user = User::find($user_id);
$user->notify(new AdminResponseToApplication($data))
函数中的
$user
在通知类中作为
$notifiable
可用

您可以使用$notifiable->name等获取该对象的任何值

记住

AdminResponseToApplication是一个类,您可以用它做php类可以做的任何事情

因此,您可以在构造函数中传递任意数量的变量AdminResponseToApplication类,并执行您想要的操作

$user->notify(new AdminResponseToApplication($data))
如上所示,我正在向构造函数中可用的类发送一个$data对象

在课堂上

class AdminResponseToApplication extends notification implements ShouldQueue{
    use Queueable;

    public $myData;
    public function __construct($data)
    {
        $this->myData = $data;  //now you have a $data copied to $this->myData which
        // you can call it using $this->myData in any function of this class.
    }

}

获取用户对象并对其调用函数notify()$此->notify()将不起作用,因为$this不是用户类的实例

$user = User::find($user_id);
$user->notify(new AdminResponseToApplication($data))
函数中的
$user
在通知类中作为
$notifiable
可用

您可以使用$notifiable->name等获取该对象的任何值

记住

AdminResponseToApplication是一个类,您可以用它做php类可以做的任何事情

因此,您可以在构造函数中传递任意数量的变量AdminResponseToApplication类,并执行您想要的操作

$user->notify(new AdminResponseToApplication($data))
如上所示,我正在向构造函数中可用的类发送一个$data对象

在课堂上

class AdminResponseToApplication extends notification implements ShouldQueue{
    use Queueable;

    public $myData;
    public function __construct($data)
    {
        $this->myData = $data;  //now you have a $data copied to $this->myData which
        // you can call it using $this->myData in any function of this class.
    }

}

谢谢@Afraz。它有错误,它说“未定义变量:数据”。这部分我有点不知所措
$user->notify(newadminresponsetoapplication($data)),我知道这只是您的示例,但是$data应该有什么?因为我试图传递的是来自两个不同表的数据,一个是用户,另一个是状态表中的状态。不要将$user传递给构造函数,因为
$user->notify()
已将其作为
$notifiable
传递。只发送$status。希望这将消除您面临的错误<代码>$user->notify(新通知类名称($status))
;错误已消失,但未触发通知。目前,我在控制器的更新功能中有此功能,
$user->notify(newadminresponsetoapplication($statusName))public$myStatus公共函数到数据库($notifiable)
中的code>和'public function\uu construct($statusName){$this->myStatus=$statusName;}'我返回
'title'=>$notifiable->name。'您的贷款已经被删除。'$statusName->name,
我觉得代码还可以。确保完成通知要求。谢谢@Afraz。它有错误,它说“未定义变量:数据”。这部分我有点不知所措
$user->notify(newadminresponsetoapplication($data)),我知道这只是您的示例,但是$data应该有什么?因为我试图传递的是来自两个不同表的数据,一个是用户,另一个是状态表中的状态。不要将$user传递给构造函数,因为
$user->notify()
已将其作为
$notifiable
传递。只发送$status。希望这将消除您面临的错误<代码>$user->notify(新通知类名称($status))
;错误已消失,但未触发通知。目前,我在控制器的更新功能中有此功能,
$user->notify(newadminresponsetoapplication($statusName))public$myStatus公共函数到数据库($notifiable)
中的code>和'public function\uu construct($statusName){$this->myStatus=$statusName;}'我返回
'title'=>$notifiable->name。'您的贷款已经被删除。'$statusName->name,
我觉得代码还可以。确保完成通知要求。