visual-ideas/moonshine-spatie-medialibrary
Image field to support Spatie’s MediaLibrary, enabling richer media handling (e.g., multiple files, custom collections, metadata). This aligns well with Laravel applications requiring scalable, flexible media management beyond basic file uploads.MediaLibrary, preserving its core features (e.g., disk drivers, transformations) while adapting them to MoonShine’s field system. This minimizes architectural coupling.laravel-medialibrary (v10.x+ recommended; compatibility table not provided but implied by MoonShine versions).MediaLibrary features (e.g., hasMany, morphTo, custom paths) via MoonShine’s field configuration. Example:
use VisualIdeas\MoonshineSpatieMedialibrary\Fields\MediaLibrary;
MediaLibrary::make('Gallery')
->collection('gallery')
->type('image')
->maxSize(2048)
->required();
composer.json until stability is confirmed.Image field as a baseline.Image field may suffice.MediaLibrary elsewhere in the app? If not, the overhead of adding it solely for MoonShine may not justify the complexity.MediaLibrary supports queues for processing, but MoonShine’s UI may introduce latency for large uploads.morphTo for polymorphic media?MediaLibrary features (e.g., galleries, document management).MediaLibrary and configure it per docs.use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
class Product implements HasMedia
{
use InteractsWithMedia;
}
composer require visual-ideas/moonshine-spatie-medialibrary
Image fields with MediaLibrary fields in your resource classes:
use VisualIdeas\MoonshineSpatieMedialibrary\Fields\MediaLibrary;
MediaLibrary::make('Product Images')
->collection('images')
->type(['image/jpeg', 'image/png'])
->maxSize(5120);
MediaLibrary: Assumes standard Spatie setup. Custom configurations (e.g., non-default model bindings) may require field-level overrides.intervention/image). Solution: Use Spatie’s built-in transformations.Image fields with MediaLibrary fields for non-critical media (e.g., product thumbnails).MediaLibrary field for polymorphic media.MediaLibrary handles storage, transformations, and cleanup. MoonShine provides a consistent UI layer.storage/logs/ and Spatie’s debug commands.MediaLibrary supports queued processing, but MoonShine’s UI may introduce client-side latency for large files. Solution:
spatie_media tables. Ensure indexes are optimized for your query patterns (e.g., model_type + model_id).How can I help you explore Laravel packages today?