Udalosti modelov (Trackable)
Trait Trackable posiela udalosti Plausible pri udalostiach životného cyklu Eloquentu. Udalosť modelu priraďte k názvu udalosti v $plausibleEvents a voliteľne zostavte props pre každý model:
use Illuminate\Database\Eloquent\Model;
use RoundlyConsulting\Plausible\Concerns\Trackable;
class Order extends Model
{
use Trackable;
/** @var array<string, string> */
protected array $plausibleEvents = [
'created' => 'Order Placed',
'updated' => 'Order Updated',
'deleted' => 'Order Cancelled',
];
/** @return array<string, mixed> */
protected function plausibleEventProps(string $event): array
{
return ['total' => $this->total, 'plan' => $this->plan];
}
}Ako kľúč funguje akákoľvek udalosť Eloquent modelu — created, updated, deleted a ďalšie. Mapa sa číta z predvolenej hodnoty vlastnosti pri bootovaní modelu.
Úprava obsahu udalosti
Prepíšte tieto chránené metódy; prvé dve dostanú názov udalosti Plausible (napríklad Order Placed):
- plausibleEventProps(string $event) — vlastné props odoslané s udalosťou (predvolene žiadne).
- plausibleEventUrl(string $event) — URL priradená udalosti; predvolene URL aplikácie, tabuľka a kľúč modelu.
- plausibleEventSite() — web, kam udalosť ide; predvolene config('plausible.site'), hodnota null udalosť preskočí.
// The URL attributed to the event — defaults to {app.url}/{table}/{key}
protected function plausibleEventUrl(string $event): string
{
return route('orders.show', $this);
}
// The site the event goes to — defaults to config('plausible.site'); null skips the event
protected function plausibleEventSite(): ?string
{
return $this->tenant->analytics_domain;
}Ručné odoslanie udalosti
// Same site, visitor and queue rules as the lifecycle hooks — any event name
$order->dispatchPlausibleEvent('Order Refunded');Transakcie
Každá udalosť počká, kým sa zmena v databáze naozaj uloží: v transakcii sa odošle (alebo zaradí do fronty) až po jej potvrdení a pri rollbacku vôbec. Mimo transakcie odíde hneď:
use Illuminate\Support\Facades\DB;
DB::transaction(function () {
Order::create(['total' => 99]); // 'Order Placed' is sent (or queued) once the transaction commits
}); // a rolled-back save is never trackedNávštevník, web a fronta
Návštevník sa berie z aktuálneho requestu, ak existuje. V konzole alebo vo workeri fronty — kde Laravel vytvorí request bez routy so zástupným user-agentom Symfony a adresou 127.0.0.1 — alebo keď request nemá user-agent či IP, sa použijú plausible.tracking.user_agent a plausible.tracking.ip_address. Udalosti sa posielajú len vtedy, keď je web známy, a cez frontu, pokiaľ plausible.tracking.queue nie je false.
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 kryptomienOdoslaní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.