将变量从控制器传递到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))我在AdminResponseToApplication.php上声明了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))我在AdminResponseToApplication.php上声明了public$myStatus在公共函数到数据库($notifiable)
中的code>和'public function\uu construct($statusName){$this->myStatus=$statusName;}'我返回'title'=>$notifiable->name。'您的贷款已经被删除。'$statusName->name,
我觉得代码还可以。确保完成通知要求。