Модель с полями с файлами
Если вы хотите использовать поле загрузки файла в 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()
для получения абсолютного адреса файла.