[英]How to implement events in Laravel 5.5
Laravel雄辯事件文檔給出了以下示例:
namespace App;
use App\Events\UserSaved;
use App\Events\UserDeleted;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The event map for the model.
*
* @var array
*/
protected $dispatchesEvents = [
'saved' => UserSaved::class,
'deleted' => UserDeleted::class,
];
}
我只想知道UserSaved::class
中的內容,例如,在初始保存時添加一個哈希ID。 在這一點上,文檔非常不透明!
在任何模型事件類中,只需執行以下操作:
例如: App \\ Events \\ UserSaved.php
<?php
namespace App\Events;
use Illuminate\Queue\SerializesModels;
class UserSaved
{
use SerializesModels;
/**
* @var \App\User
*/
public $user;
public function __construct($user)
{
// All dispatched model events will receive an instance
// of the model itself. Usually, we'll just assign
// it as a property of this event class
$this->user = $user;
}
}
調度事件隨模型實例一起提供,如源代碼所示:
因此,稍后當您的偵聽器捕獲此事件時,他們將擁有此UserSaved
對象的實例,並且您只需從$userSaved->user
訪問$userSaved->user
。
這將是一個事件類,它采用要在其構造函數中為其觸發事件的當前模型。
“事件類只是一個保存與事件有關的信息的數據容器。” Laravel 5.5文檔-事件-定義事件
您將需要設置一個偵聽器來偵聽您現在要觸發的自定義事件對象,而不是通常觸發的雄辯的字符串事件。 您可以在偵聽器中對此事件做出反應。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.