は、このリンクに記載されているように、私は放送プッシャーデータを発射し、それらのイベントを拡張するにはどうすればよいEvent of ModelsLaravel 5.3放送、セーブなどのイベント
この
を実装する方法はありますモデルの個別のイベントを作成するのではなく、
は、このリンクに記載されているように、私は放送プッシャーデータを発射し、それらのイベントを拡張するにはどうすればよいEvent of ModelsLaravel 5.3放送、セーブなどのイベント
この
を実装する方法はありますモデルの個別のイベントを作成するのではなく、
というようにさまざまな方法があります。すべてのモデルイベントをキャッチする場合は、ワイルドカードリスナーを登録できます。ブート方法であなたのApp\Providers\EventServiceProvider
でワイルドカードリスナーを登録します。
public function boot()
{
parent::boot();
Event::listen('eloquent.*', function (array $data) {
broadcast(new YourModelEventListener($data));
});
}
それとも、それぞれのモデルのために別々のロジックを維持したい場合は、すべてのイベントをキャッチし、あなたの放送ハンドラに送信クラスオブザーバを作成することができます。
オブザーバーに続いて、観察
class MyModel extends Model
{
protected static function boot()
{
parent::boot();
static::observe(new MyModelObserver);
}
}
を登録します。
class MyModelObserver
{
public function broadcast($method, $model)
{
broadcast(new YourModelEventListener($method, $model));
}
public function creating($model)
{
$this->broadcast('creating', $model);
}
public function updating($model)
{
$this->broadcast('updating', $model);
}
}
public MyBroadCastEvent implements ShouldBroadcast {
public function broadcastOn() {
return ['test'];
}
}
public MyBroadCastEventListener {
public function handle(MyBroadCastEvent $event) {
// should i remove that type hint?
// then do something here
}
}
は、このを呼びますか?
ブロードキャスト(新しいMyBroadCastEventListener($ data)); ?
ブロードキャスト機能のブロードキャストチャンネルはどこですか? –
https://laravel.com/docs/master/broadcasting#broadcasting-eventsこちらのドキュメントを参照してください。 'ShouldBroadcast'インタフェースhttps:/を実装している' YourModelEventListener'クラスの 'broadcastOn()'メソッドでチャネルを定義します。 /laravel.com/docs/master/broadcasting#defining-broadcast-events –
私はShouldBroadcastのインターフェースを持つ新しいイベントを作ります 私が作ったイベントの新しいリスナーを作るところ これはラッパーや何かのように? このような? モデルイベント - > MyBroadCastEvent - > MyBroadCastEventListener? –