NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Likes for Laravel

Broadcasting

Liked, Unliked a ReactionChanged sa dajú vysielať cez Laravel Echo. Broadcasting je predvolene vypnutý, takže existujúce inštalácie sa nezmenia. Zapnete ho v config/likes.php alebo v prostredí:

// config/likes.php
'broadcast' => [
    'enabled' => env('LIKES_BROADCAST', true),
    'channel_prefix' => 'likes',
    'channel_type' => 'private',   // private | public | presence
],
LIKES_BROADCAST=true

Po zapnutí sa každá udalosť vysiela na kanáli {channel_prefix}.{segment}.{id}, kde segment je morph trieda cieľového modelu — len posledná časť, v snake_case a v množnom čísle. App\Models\Post s id 42 sa vysiela na likes.posts.42. Vaše listenery dostávajú udalosti bez ohľadu na toto nastavenie.

UdalosťVysiela sa ako
Likedlike.created
Unlikedlike.removed
ReactionChangedreaction.changed

Autorizácia súkromných kanálov

Predvolený typ kanála je private, preto ho autorizujte v routes/channels.php:

// routes/channels.php
use Illuminate\Support\Facades\Broadcast;

Broadcast::channel('likes.posts.{id}', function ($user, int $id): bool {
    return $user->can('view', Post::findOrFail($id));
});

Počúvanie cez Echo

Keďže udalosti majú vlastné názvy pre broadcasting, v Echo pred ne pridajte bodku:

Echo.private('likes.posts.42')
    .listen('.like.created', (e) => { /* e.like_id, e.actor_type, e.actor_id, e.likeable_type, e.likeable_id, e.type */ })
    .listen('.like.removed', (e) => { /* ... */ })
    .listen('.reaction.changed', (e) => { /* e.from, e.to */ });

Doručenie a obsah správy

Udalosti implementujú ShouldBroadcast, takže vysielanie prechádza vašou frontou. Obsah nesie len identifikátory a reakciu — nikdy modely aktéra či cieľového objektu —, takže sa k odberateľovi kanála nedostane žiadny atribút vašich používateľov:

// like.created / like.removed
['like_id' => 7, 'actor_type' => 'App\Models\User', 'actor_id' => 1,
 'likeable_type' => 'App\Models\Post', 'likeable_id' => 42, 'type' => 'love']

// reaction.changed — `from` / `to` instead of `type`
[..., 'from' => 'like', 'to' => 'love']

Čokoľvek ďalšie si na klientovi načítajte podľa id.

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.