Modelele Eloquent emit o serie de evenimente pe durata ciclului lor de viață. În loc să aglomerezi modelele sau controllerele cu logici secundare (cum ar fi generarea automată de slug-uri, trimiterea de emailuri sau jurnalizarea acțiunilor), se utilizează Observers.
O clasă Observer grupează metode numite după evenimentul interceptat: created(User $user), updating(User $user), deleted(User $user).
Exemplu: Generare automată slug în evenimentul creating al unui Observer
namespace App\Observers;
use App\Models\Post;
use Illuminate\Support\Str;
class PostObserver
{
public function creating(Post $post): void
{
// Generează automat slug-ul înainte de inserarea în SQL:
if (empty($post->slug)) {
$post->slug = Str::slug($post->title) . '-' . Str::random(5);
}
}
public function deleted(Post $post): void
{
// Curățare fișiere atașate la ștergerea postării...
}
}
// Înregistrare în model (Laravel 11):
// #[ObservedBy([PostObserver::class])]
// class Post extends Model {}
Întrebări & Exemple de Cod:
Evenimente de Model și Clasa Observer în EloquentAi o nelămurire despre utilizarea comenzii
Evenimente de Model și Clasa Observer în Eloquentsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.