A drag and drop image uploader using Spatie's medialibary.
To attach images to a model, only the media contract and the media trait must be added to the model.
use Ignite\Crud\Models\Traits\HasMedia;
use Spatie\MediaLibrary\HasMedia as HasMediaContract;
class Post extends Model implements HasMediaContract
{
use HasMedia;
}
For all images that are uploaded an input field for alt
and title
is
displayed, with translatable
these two fields are made translatable.
$form->image('images') // images is the corresponding media collection.
->translatable()
->title('Images')
->hint('Image Collection.')
->maxFiles(5);
Add the image attribute to your model:
public function getImagesAttribute()
{
return $this->getMedia('images');
}
To crop the image to a desired ratio before uploading it, a ratio can be defined
using the method crop
.
$form->image('images')->title('Images')->crop(16 / 9);
If no ratio is passed as a parameter to the crop method, the image can be freely cropped.
By default the images are displayed as a square. However, this view is not suitable for example for header images. With expand you can display the image at full size.
$form->image('header_image')->title('Header Image')->expand();
In the case that the first image from the list should be used as a preview
image, you can use firstBig
to display the first image bigger to show that it
has a special importance.
$form->image('images')
->title('Images')
->firstBig()
->hint('The first image is the preview image.');
In the config lit.mediaconversions
all conversions groups are specified. If
you would like a model to use another conversion group than default
, the group
name can be set using the attribute mediaconversions
.
class Post extends Model implements HasMediaContract
{
...
/**
* Media conversions group.
*
* @var string
*/
protected $mediaconversions = 'other';
}
To display conversion urls it is important to set the env APP_URL
to the url
you are working in.
The maximum allowed file size for an image can be specified using the
maxFileSize
method. The file size is given in megabytes. The default value
is 12 mb.
$form->image('images')->title('Images')->maxFileSize(25);
Method | Description |
---|---|
$field->title('Image') |
The title for this form field. |
$field->translatable() |
Should the field be translatable. |
$field->hint('Foo.') |
A short hint that should describe how to use the form field.` |
$field->info('...') |
Questionmark with tooltip. (Can contain longer field descriptions) |
$field->width(1/2) |
Width of the form field. |
$field->sortable() |
Should the images be sortable? (default: true ) |
$field->maxFiles(1) |
Maxmium number of uploadable images. (default: 5 ) |
$field->maxFileSize(100) |
Maximum file size. (default: 12 ) |
$field->expand() |
Expand the preview image to its full width. |
$field->crop(16/9) |
Opens a Crop-Tool before the upload. (default: false ) |
$field->showFullImage() |
Display's the full image inside of the square box. |
$field->firstBig() |
Display's the first image bigger. |