Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/okipa/laravel-medialibrary-ext
Extra features for spatie/laravel-medialibrary package
https://github.com/okipa/laravel-medialibrary-ext
cms conversion downloads extension images laravel laravel-medialibrary media okipa spatie
Last synced: 3 months ago
JSON representation
Extra features for spatie/laravel-medialibrary package
- Host: GitHub
- URL: https://github.com/okipa/laravel-medialibrary-ext
- Owner: Okipa
- License: mit
- Created: 2019-08-27T13:01:38.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-02-19T19:57:27.000Z (almost 2 years ago)
- Last Synced: 2024-11-02T09:51:40.635Z (3 months ago)
- Topics: cms, conversion, downloads, extension, images, laravel, laravel-medialibrary, media, okipa, spatie
- Language: PHP
- Homepage:
- Size: 5.39 MB
- Stars: 9
- Watchers: 3
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
![Laravel Medialibrary Extension](/docs/laravel-medialibrary-ext.png)
This package extension provides extra features for the [spatie/laravel-medialibrary](https://github.com/spatie/laravel-medialibrary) package.
Found this package helpful? Please consider supporting my work!
[![Donate](https://img.shields.io/badge/Buy_me_a-Ko--fi-ff5f5f.svg)](https://ko-fi.com/arthurlorent)
[![Donate](https://img.shields.io/badge/Donate_on-PayPal-green.svg)](https://paypal.me/arthurlorent)## Compatibility
This package extension will follow the [base package](https://github.com/spatie/laravel-medialibrary) major versions but may be a bit stricter about compatibility constraints.
| Laravel | Original package | PHP | Package |
|------------------------------------------------------|------------------|--------------------|---------|
| ^9.0 | ^10.0 | ^10.7.9 | 8.1.* | 8.2.* | ^10.2 |
| ^9.0 | ^10.6 | ^8.1 | ^8.2 | ^10.1 |
| ^9.0 | ^10.0 | ^8.0 | ^8.1 | ^10.0 |
| ^7.0 | ^8.0 | ^9.0 | ^7.4 | ^8.0 | ^9.1 |
| ^7.0 | ^8.0 | ^9.0 | ^7.4 | ^9.0 |
| ^7.0 | ^8.0 | ^8.7.1 | ^7.4 | ^8.1 |
| ^6.0 | ^7.0 | ^8.0 | ^7.4 | ^8.0 |
| ^6.0 | ^7.0 | X | ^7.4 | ^8.0 |
| ^5.8 | ^6.0 | ^7.0 | X | ^7.2 | ^7.18 |
| ^5.5 | ^5.6 | ^5.7 | ^5.8 | ^6.0 | X | ^7.2 | ^7.12 |
| ^5.5 | ^5.6 | ^5.7 | ^5.8 | X | ^7.2 | ^7.11 |## Upgrade guide
* [From V9 to V10](/docs/upgrade-guides/from-v9-to-v10.md)
* [From V8 to V9](/docs/upgrade-guides/from-v8-to-v9.md)
* [From V7 to V8](/docs/upgrade-guides/from-v7-to-v8.md)## Table of contents
* [Installation](#installation)
* [Documentation](#documentation)
* [Translations](#translations)
* [Extension features](#extension-features)
* [Validation rules](#media-validation-rules)
* [Media caption](#media-caption)
* [Testing](#testing)
* [Changelog](#changelog)
* [Contributing](#contributing)
* [Security](#security)
* [Credits](#credits)
* [Licence](#license)## Installation
First, be sure to follow the base package installation instructions:
* https://github.com/spatie/laravel-medialibrary#installation
* https://docs.spatie.be/laravel-medialibrary/v8/installation-setupThen, install the extension via composer:
```bash
composer require okipa/laravel-medialibrary-ext
```Finally, implement the `ExtendsMediaAbilities` trait to be able to use the extension features in addition of the base package ones.
```php
use Illuminate\Database\Eloquent\Model;
use Okipa\MediaLibraryExt\ExtendsMediaAbilities;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;class Page extends Model implements HasMedia
{
use InteractsWithMedia;
use ExtendsMediaAbilities;// ...
}
```## Documentation
Find the complete documentation of the base package here: https://docs.spatie.be/laravel-medialibrary/v8/introduction.
## Translations
All captions are translatable.
See how to translate them on the Laravel official documentation: https://laravel.com/docs/localization#using-translation-strings-as-keys.
Here is the list of the sentences available for translation:
* `Min. width: :width px.`
* `Min. height: :height px.`
* `{1}Accepted type: :types.|[2,*]Accepted types: :types.`
* `Max. file size: :size Mb.`## Extension features
### Media validation rules
Declaring your media validation rules like this:
```php
// In your user storing form request for example
public function rules()
{
return [
'avatar' => (new User)->getMediaValidationRules('avatar'),
// your other validation rules
];
}
```Will generate:
```php
// Example
['mimetypes:image/jpeg,image/png', 'mimes:jpg,jpeg,jpe,png', 'dimensions:min_width=60,min_height=20', 'max:5000'];
```#### Available public methods:
* `->getMediaValidationRules(string $collectionName): array`: returns all the validation rules for the given collection.
* `->getMediaMimesValidationRules(string $collectionName): string`: returns only the mimes validation rules for the given collection.
* `->getMediaMimeTypesValidationRules(string $collectionName): string`: returns only the mime types validation rules for the given collection.
* `->getMediaDimensionValidationRules(string $collectionName): string`: returns only the dimension validation rules for the given collection.
* `->getMediaSizeValidationRule(): string`: returns only the max file size validation rule set from the base package `media-library.max_file_size` configuration value.### Media caption
Adding a constraint caption under a file input:
```html
Choose a profile picture:
{{ $user->getMediaCaption('avatar') }}
```Will generate:
```html
Min. width: 150 px. Min. height: 70 px. Accepted types: jpg, jpeg, jpe, png. Max file size: 5Mb.
```#### Available public methods:
* `getMediaCaption(string $collectionName): string`: returns a complete caption for the given collection.
* `getMediaDimensionsCaption(string $collectionName): string`: returns only the dimensions caption for the given collection.
* `getMediaMimeTypesCaption(string $collectionName): string`: returns only the mime types caption for the given collection.
* `getMediaSizeCaption(): string`: returns only the config max file size caption only.### Exceptions
In order to avoid careless mistakes when using public methods that are requiring a `string $collectionName` argument provided by this extension, an `Okipa\MediaLibraryExt\Exceptions\CollectionNotFound` exception will be thrown when the given collection name is not found in the targeted model.
## Testing
``` bash
composer test
```## Changelog
Please see [CHANGELOG](CHANGELOG.md) for more information about what has changed recently.
## Contributing
Please see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.
## Security
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
## Credits
- [Arthur LORENT](https://github.com/okipa)
- [All Contributors](../../contributors)## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.