簡體   English   中英

如何在Laravel 5.5中實現事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM