LaravelPackages.net
Acme Inc.
Toggle sidebar
fomvasss/laravel-medialibrary-extension

Extension for use spatie/laravel-medialibrary

3.187
4
6.3.2
About fomvasss/laravel-medialibrary-extension

fomvasss/laravel-medialibrary-extension is a Laravel package for extension for use spatie/laravel-medialibrary. It currently has 4 GitHub stars and 3.187 downloads on Packagist (latest version 6.3.2). Install it with composer require fomvasss/laravel-medialibrary-extension. Discover more Laravel packages by fomvasss or browse all Laravel packages to compare alternatives.

Last updated

Laravel Medialibrary Extension

License Build Status Latest Stable Version Total Downloads Quality Score

Support

If this package is useful to you, consider supporting its development:

Monobank Ko-Fi USDT TRC20

USDT TRC20 address: THLgp6DxiAtbNHvgnKV56vk1L38UuUagKf

Extensions to the file management functionality of package spatie/laravel-medialibrary


Installation

composer require fomvasss/laravel-medialibrary-extension

Publish spatie/laravel-medialibrary

php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="medialibrary-migrations"
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="medialibrary-config"

Publish fomvasss/laravel-medialibrary-extension

php artisan vendor:publish --provider="Fomvasss\MediaLibraryExtension\ServiceProvider"

Run migration:

php artisan migrate

Integration in Eloquent models

Implements interface:

Fomvasss\MediaLibraryExtension\HasMedia\HasMedia

Usage in Eloquent models trait:

Fomvasss\MediaLibraryExtension\HasMedia\InteractsWithMedia

Usage example

In Your model: app/Models/Article.php:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Spatie\Image\Enums\Fit;
use Spatie\MediaLibrary\MediaCollections\Models\Media;
use Fomvasss\MediaLibraryExtension\HasMedia\HasMedia;
use Fomvasss\MediaLibraryExtension\HasMedia\InteractsWithMedia;

class Article extends Model implements HasMedia
{
    use InteractsWithMedia;
    
    // html-input name == media collection name, example:
    protected $mediaSingleCollections = ['image']; 
    protected $mediaMultipleCollections = ['images', 'files'];

    /**
     * Optional method.
     */
    public function customMediaConversions(Media $media = null): void
    {
      $this->addMediaConversion('main')
            ->performOnCollections('image')
            ->format('webp');   // Supported medialibrary: jpg, png, svg, webp, avif, pdf, mp4 , mov or webm 

        $this->addMediaConversion('preview')
            ->performOnCollections('image', 'images')
            ->fit(Fit::Contain, 300, 300)
            ->nonQueued();
    }
}

In controller app/Http/Controllers/Article.php:

<?php 

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller 
{
    public function store(PostRequest $request)
    {
        $article = Article::create($request->validated());
    
        $article->mediaManage($request);
        // Or usage Facade:
        \MediaLibrary::manage($article, $request);
        
        //...
    }
    
    public function show($id)
    {
        $article = \App\Model\Article::findOrFail($id);
        
        $url = $article->getFirstMediaUrl('image');
        $image = $article->getFirstMedia('image');
        $alt = $image->getCustomProperty('alt');
        $images = $article->getMedia('images'); // collection
        // ...
        // Also available all methods spatie/laravel-medialibrary!
    }   
}

Clear temporary downloads

Run \Fomvasss\MediaLibraryExtension\Actions\ClearMediaTemporary::doHandle()

Examples HTML form

For upload files from collection name images you need send form with next data:

<input type="file" name="image">
<input type="hidden" name="image_custom[15][alt]" value="This Alt image text">

<input type="file" multiple="" name="images[]">

For set sort order file from collection name images and id = 13, 15 you need send form with next data (weight = 21, 22):

<input type="hidden" name="images_weight[15]" value="21">
<input type="hidden" name="images_weight[13]" value="22">
<input type="hidden" name="images_custom[13][alt]" value="Some text">

For deleted file from collection name images and id = 13, 15 you need send form with next data:

<input type="hidden" name="images_deleted[]" value="13">
<input type="hidden" name="images_deleted[]" value="15">

spatie/laravel-medialibrary

Star History Chart