Laravel Orchid Media Library Wrapper - Seamless integration of Spatie Media Library with Orchid Platform
eliminationzx/laravel-orchid-media-library is a Laravel package for laravel orchid media library wrapper - seamless integration of spatie media library with orchid platform.
It currently has 0 GitHub stars and 5 downloads on Packagist (latest version v3.0.5).
Install it with composer require eliminationzx/laravel-orchid-media-library.
Discover more Laravel packages by eliminationzx
or browse all Laravel packages to compare alternatives.
Last updated
A comprehensive media management package for Laravel Orchid Platform that seamlessly integrates Spatie's Laravel Media Library with Orchid's admin interface. This package provides a complete media management solution with configuration-driven customization, comprehensive testing, and modern PHP 8.3+ features.
composer require eliminationzx/laravel-orchid-media-library
Run the installation command to set up the package:
php artisan orchid-media-library:install
This command will:
If you haven't already installed Spatie's Media Library, run its migrations:
php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="media-library-migrations"
php artisan migrate
This package uses a configuration-free architecture with sensible defaults. Instead of configuration files, it uses:
All package settings are defined as class constants with sensible defaults:
// MediaService constants
MediaService::SCREEN_NAME = 'Media'
MediaService::SCREEN_ICON = 'film'
MediaService::SCREEN_PLURAL = 'media'
MediaService::ROUTE_PREFIX = 'platform'
MediaService::ROUTE_MIDDLEWARE = ['web', 'platform']
MediaService::ALLOWED_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif']
// ConversionService constants
ConversionService::PLATFORM_CONVERSION = [
'width' => 100,
'height' => 100,
'crop' => 'center',
'quality' => 70,
'optimize' => true,
'queue' => false,
'enabled' => true,
]
Customize settings at runtime without configuration files:
// Customize media library settings
MediaService::customize([
'screen_name' => 'Media Files',
'screen_icon' => 'image',
'allowed_mime_types' => ['image/jpeg', 'image/png', 'image/gif', 'image/webp'],
'route_middleware' => ['web', 'platform', 'auth'],
]);
// Get customized values
$allowedTypes = MediaService::getAllowedMimeTypes();
$routePrefix = MediaService::getRoutePrefix();
Media-specific settings use Spatie's Media Library configuration (config/media-library.php):
// The package respects Spatie's configuration for:
// - Disk name (config('media-library.disk_name'))
// - Max file size (config('media-library.max_file_size'))
// - Image quality (config('media-library.image_quality'))
// - And other media-specific settings
| Setting | Constant | Default | Customization Method |
|---------|----------|---------|---------------------|
| Screen Name | SCREEN_NAME | 'Media' | MediaService::customize(['screen_name' => '...']) |
| Screen Icon | SCREEN_ICON | 'film' | MediaService::customize(['screen_icon' => '...']) |
| Route Prefix | ROUTE_PREFIX | 'platform' | MediaService::customize(['route_prefix' => '...']) |
| Route Middleware | ROUTE_MIDDLEWARE | ['web', 'platform'] | MediaService::customize(['route_middleware' => [...]]) |
| Allowed MIME Types | ALLOWED_MIME_TYPES | ['image/jpeg', 'image/png', 'image/gif'] | MediaService::customize(['allowed_mime_types' => [...]]) |
| Platform Conversion | PLATFORM_CONVERSION | See above | Modify ConversionService::PLATFORM_CONVERSION constant |
| OpenGraph Conversion | OPENGRAPH_CONVERSION | 128x128, center crop | Modify ConversionService::OPENGRAPH_CONVERSION constant |
| Thumbnail Conversion | THUMBNAIL_CONVERSION | 300x300, center crop | Modify ConversionService::THUMBNAIL_CONVERSION constant |
Clear runtime customizations to restore defaults:
MediaService::clearCustomizations();
Once installed, the media library will be available in your Orchid admin panel at /platform/media. You can:
The package provides a MediaService class for accessing configuration-based settings:
use Orchid\MediaLibrary\Services\MediaService;
// Get screen configuration
$screenName = MediaService::getName(); // 'Media'
$screenIcon = MediaService::getIcon(); // 'film'
// Get route names
$listRoute = MediaService::getRouteList(); // 'platform.media.list'
$showRoute = MediaService::getRouteShow(); // 'platform.media.show'
$editRoute = MediaService::getRouteEdit(); // 'platform.media.edit'
The ConversionService provides methods for working with image conversions:
use Orchid\MediaLibrary\Services\ConversionService;
// Apply a conversion to media
$convertedUrl = ConversionService::applyConversion($media, 'thumbnail');
// Check if a conversion is enabled
if (ConversionService::isConversionEnabled('platform')) {
// Apply platform conversion
}
Use the included Blade components to display media in your views:
{{-- Image preview component --}}
<x-orchid-laravel-media-library::components.platform.image-preview-component
:media="$media"
:conversion="'thumbnail'"
/>
{{-- Media link component --}}
<x-orchid-laravel-media-library::components.platform.media-link
:media="$media"
:label="'View Media'"
/>
Use the included TD (Table Definition) components in your Orchid screens:
use Orchid\MediaLibrary\Orchid\Helpers\TD\ImagePreviewTD;
TD::make('preview', 'Preview')
->component(ImagePreviewTD::class)
->width('100px'),
The package includes a comprehensive test suite. To run tests:
# Run all tests
composer test
# Run tests with coverage report
composer test-coverage
# Run static analysis with PHPStan
composer analyse
# Format code with Laravel Pint
composer format
composer installcomposer testcomposer analyseThe package uses Laravel Pint for code formatting. Run composer format to automatically format code according to the project standards.
PHPStan is configured at level 9 for maximum type safety. Run composer analyse to check for type errors and code quality issues.
This package is open-source software licensed under the MIT license.
Laravel Orchid Media Library - Professional media management for Laravel Orchid applications.