Skip to content

Medya

Polimorfik bir medya sistemi; herhangi bir modele dosya/görsel iliştirmeyi sağlar. Üç parçadan oluşur: app/Models/Media.php, app/Services/Support/MediaService.php ve app/Concerns/HasMedia.php.

media tablosu

Polimorfik media tablosu şu alanları taşır:

AlanAçıklama
disk, pathDepolama diski ve yol
original_name, mime_type, sizeDosya meta verisi
collectionKoleksiyon adı (örn. gallery, cover)
sort_orderSıralama
custom_propertiesSerbest biçimli JSON (örn. alt, is_cover, focal)

custom_properties içindeki hiçbir alan zorunlu değildir; ihtiyaç oldukça doldurulur.

MediaService

Transactional ve otomatik sort_order'lı işlemler:

  • attach() — bir modele medya iliştirir.
  • detach() — kaldırır.
  • reorder() — koleksiyon içinde yeniden sıralar.

Erişim

  • Media::url() — genel (public) dosyalar için doğrudan URL.
  • Media::temporaryUrl(?DateTimeInterface) — özel (private) dosyalar için imzalı, süreli URL (varsayılan 5 dakika).

Klasör düzeni

Medya, sahibine göre yönlendirilir (HasMedia içindeki mediaAccountCode() hook'u):

Üye sahipli   → public/{account.code}     ve  private/{account.code}
Yönetici/genel → public/media              ve  private/media

Modele ekleme

Bir model use App\Concerns\HasMedia ile şu yetenekleri kazanır: polimorfik media() ilişkisi, mediaIn($collection) ve firstMediaIn($collection).

Hazır ama bağlı değil

media-gallery React bileşeni tamamlanmış olarak gelir ancak şu an hiçbir ekrana bağlı değildir — ihtiyaç anında kullanılmak üzere hazır bekler. Bu, bilinçli bir scaffolding'dir; silinmemelidir.

MIT lisansı ile yayınlanmıştır.