- Основы
- Disk
- Директория
- Допустимые расширения
- Множественная загрузка
- Удаление файлов
- Запрет на скачивание
- Оригинальное имя файла
- Пользовательское имя файла
- Имена элементов
- Сортировка перетаскиванием
- Атрибуты элементов
- Вспомогательные методы
Основы
Содержит все Базовые методы.
Перед использованием необходимо убедиться, что для директории storage установлена символическая ссылка.
php artisan storage:link
Поле File
используется для загрузки файлов.
use MoonShine\UI\Fields\File; File::make('File')
<x-moonshine::form.wrapper label="File"> <x-moonshine::form.file name="file" /></x-moonshine::form.wrapper>
Чтобы правильно сгенерировать URL файла, вы должны определить переменную окружения APP_URL
таким образом, чтобы она соответствовала URL вашего приложения.
Disk
Метод disk()
позволяет изменить filesystems disk.
disk(string $disk)
File::make('File') ->disk('public')
По умолчанию используется disk public
.
Вы можете изменить его в файле конфигурации.
При использовании драйвера local
возвращаемое значение url
не является URL.
По этой причине мы рекомендуем всегда хранить ваши файлы с именами, которые будут создавать действительные URL.
Директория
По умолчанию файлы будут сохраняться в корневом каталоге диска.
Метод dir()
позволяет указать директорию для сохранения файлов относительно корневой директории.
dir(string $dir)
File::make('File') ->dir('docs')
Допустимые расширения
Используя метод allowedExtensions()
, вы можете указать, какие файлы будут доступны для загрузки.
allowedExtensions(array $allowedExtensions)
File::make('File') ->allowedExtensions(['pdf', 'doc', 'txt'])
Множественная загрузка
Для загрузки нескольких файлов используйте метод multiple()
.
multiple(Closure|bool|null $condition = null)
File::make('File') ->multiple()
В базе данных поле должно быть типа "text" или "json". Также необходимо указать cast — "array", "json" или "collection".
Удаление файлов
Чтобы иметь возможность удалять файлы, необходимо использовать метод removable()
.
removable( Closure|bool|null $condition = null, array $attributes = [])
$condition
- условие выполнения метода,$attributes
- дополнительные атрибуты кнопки.
File::make('File') ->removable()
Кнопка удаления будет доступна в режиме редактирования поля.
Удаляя ресурс, файлы так же удаляются.
При массовом удалении элементов ресурса, удаление файлов не производится. Удаление файлов при массовом удалении элементов необходимо реализовать самостоятельно.
Атрибуты
File::make('File') ->removable( attributes: ['@click.prevent' => '$event.target.closest(`.x-removeable`).remove()'] )
disableDeleteFiles()
Метод disableDeleteFiles()
позволит удалить только запись в базе данных, но не удалять сам файл.
disableDeleteFiles()
File::make('File') ->removable() ->disableDeleteFiles()
enableDeleteDir()
Метод enableDeleteDir()
удаляет директорию, указанную в методе dir()
, если она пуста.
enableDeleteDir()
File::make('File') ->dir('docs') ->removable() ->enableDeleteDir()
Запрет на скачивание
Метод disableDownload()
позволяет исключить возможность скачивания файла.
disableDownload(Closure|bool|null $condition = null)
File::make('File', 'file') ->disableDownload()
Оригинальное имя файла
При загрузке по умолчанию генерируется имя файла. Метод keepOriginalFileName()
позволяет сохранить файл с оригинальным именем.
keepOriginalFileName()
File::make('File') ->keepOriginalFileName()
Пользовательское имя файла
Метод customName()
позволяет сохранить файл с пользовательским именем.
customName(Closure $name)
use Illuminate\Http\UploadedFile;use Illuminate\Support\Str; File::make('File', 'file') ->customName(fn(UploadedFile $file, Field $field) => Str::random(10) . '.' . $file->extension())
Имена элементов
Метод names()
позволяет изменить отображаемое имя без изменения имени файла.
names(Closure $closure)
$closure
- замыкание принимает имя файла и индекс файла.
File::make('File', 'file') ->names(fn(string $filename, int $index = 0) => 'File ' . $index + 1)
Сортировка перетаскиванием
Вы можете указать URL, который обработает позиции и сохранит новые.
File::make('Files') ->reorderable(fn(File $ctx) => "/reorder/" . $ctx->getData()->getKey()) ->multiple(),
Атрибуты элементов
Метод itemAttributes()
позволяет добавить дополнительные атрибуты к элементам.
itemAttributes(Closure $closure)
$closure
- замыкание принимает имя файла и индекс файла.
File::make('File', 'file') ->itemAttributes(fn(string $filename, int $index = 0) => [ 'style' => 'width: 250px; height: 250px;' ])
Атрибуты dropzone
File::make('Files') ->dropzoneAttributes(fn(File $ctx) => ['class' => 'custom-class']) ->multiple(),
Вспомогательные методы
getRemainingValues()
Метод getRemainingValues()
позволяет получить значения, которые остались в форме, с учетом удаления.
getRemainingValues()
removeExcludedFiles()
Метод removeExcludedFiles()
позволяет физически удалить файлы в процессе.
removeExcludedFiles()