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

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

Пример

<?php

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

class Document extends \Eloquent implements ModelWithFileFieldsInterface
{
    use ModelWithImageOrFileFieldsTrait;

    public function getFileFields()
    {
        return [
            'file' => 'documents/',
            'other' => ['other_files/', function($directory, $originalName, $extension)
            {
                return $originalName;
            }]
        ];
    }
}

Указание полей с файлами

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

Если путь пуст, файлы будут храниться в filesDirectory.

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

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

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

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

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

$document->file

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

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

$document->file->link()

для получения абсолютного адреса файла.