Если вы хотите использовать столбец с изображением или поле загрузки изображения в SleepingOwl Admin вы должны подготовить вашу модель:

  • Добавьте интерфейс SleepingOwl\Models\Interfaces\ModelWithImageFieldsInterface в вашу модель.
  • Добавьте трэйт SleepingOwl\Models\Traits\ModelWithImageOrFileFieldsTrait (если ваша модель расширяет SleepingOwlModel вам не нужно это делать).
  • Добавьте метод public function getImageFields().

Пример

<?php

use SleepingOwl\Models\Interfaces\ModelWithImageFieldsInterface;
use SleepingOwl\Models\Traits\ModelWithImageOrFileFieldsTrait;

class Monument extends \Eloquent implements ModelWithImageFieldsInterface
{
    use ModelWithImageOrFileFieldsTrait;

    public function getImageFields()
    {
        return [
            'image' => 'monuments/',
            'photo' => '',
            'other' => ['other_images/', function($directory, $originalName, $extension)
            {
                return $originalName;
            }]
        ];
    }
}

Указание полей с изображениями

getImageFields() должен возвращать массив, ключи которого — название полей с изображениями, а значения — пути к директории, где будут храниться изображения, относительно imagesDirectory (смотрите конфигурация).

Если путь пуст, изображения будут храниться в imagesDirectory.

Произвольная функция именования файлов

Значения в массиве могут быть типа string или array:

  • string — директория для загрузки изображений, имя файла будет сгенерировано случайно.
  • array — первый элемент массива будет директорией для загрузки изображений, второй элемент должен быть функцией, возвращающей название файла (function($directory, $originalName, $extension){}).
    • $directory — абсолютный путь к директории загрузки
    • $originalName — исходное название загруженного файла
    • $extension — расширение загруженого файла

Изменение изображения при загрузке

Вы можете изменять загружаемое изображение, добавив метод setImage($field, $image) в вашу модель:

public function setImage($field, $image)
{
    parent::setImage($field, $image);
    $file = $this->$field;
    if ( ! $file->exists()) return;
    $path = $file->getFullPath();

    // вы можете использовать возможности пакета Intervention Image для изменения изображения
    Image::make($path)->resize(10, 10)->save();
}

Использование поля с изображением

Доступ к полю вашей модели

$monument->image

вернет объект класса SleepingOwl\Models\Attributes\Image.

Вы можете использовать

$monument->image->thumbnail('original')

для получения полного адреса к изображению с оригинальным размером.

Вы можете создать собственные шаблоны создания миниатюр в app/config/packages/intervention/imagecache/config.php. Подробнее смотрите в документации Intervention Imagecache.