Download the PHP package besnovatyj/yii2-cms-upload without Composer
On this page you can find all versions of the php package besnovatyj/yii2-cms-upload. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download besnovatyj/yii2-cms-upload
More information about besnovatyj/yii2-cms-upload
Files in besnovatyj/yii2-cms-upload
Package yii2-cms-upload
Short Description Функционал загрузок для Yii2 CMS
License MIT
Informations about the package yii2-cms-upload
Upload Component — Система загрузки файлов
Обзор
Переработанная система загрузки файлов и изображений для Yii2 ActiveRecord. Один behavior для файлов и изображений. Чёткое разделение ответственностей.
Структура
Интеграция в проект
1. Регистрация компонента хранилища
Через DIC, смотри \Besnovatyj\Upload\Bootstrap
2. Обновление модели Profile
Было:
Стало:
3. Обновление view-файлов и сервисов
Методы получения URL:
Все методы поддерживают fallback URL:
4. Удаление старых файлов
После миграции удалить:
app/common/components/upload/behaviors/FileUploadBehavior.phpapp/common/components/upload/behaviors/ImageUploadBehavior.phpapp/common/components/upload/behaviors/FileUploadException.phpapp/common/components/upload/behaviors/TODO.MDapp/common/components/upload/behaviors/(директория)app/common/components/upload/UploadFromUrl.phpapp/common/components/upload/UploadFileFromUrl.php
5. Поиск всех использований в проекте
Найти и обновить все файлы, ссылающиеся на старые классы:
Шаблоны путей
Пути — относительные, без Yii-алиасов. Хранилище само добавляет basePath и baseUrl.
Плейсхолдеры
| Плейсхолдер | Описание | Пример значения |
|---|---|---|
{pk} |
Primary key модели | 42 |
{model} |
Имя класса (lcfirst) | profile |
{attribute} |
Имя атрибута | photo |
{extension} |
Расширение файла | jpg |
{filename} |
Имя без расширения | my-photo |
{basename} |
Полное имя файла | my-photo.jpg |
{profile} |
Профиль превью | admin |
{attr.xxx} |
Значение атрибута модели | {attr.user_id} → 5 |
{md5.xxx} |
MD5 от атрибута модели | {md5.email} → ab12... |
Примеры
Примеры конфигураций
Простая загрузка файла (без превью)
Изображение с превью
Превью в webp/avif (параметр format)
Формат превью задаётся per-профильно и не зависит от формата оригинала:
Принципы:
- Оригинал не перекодируется —
formatкасается только превью (оригинал остаётся источником для регенерации и скачивания). formatопределяет энкодер imagine/Imagick и подставляется в{extension}шаблонаthumbPathTemplate—getThumbUrl()автоматически вернёт URL с новым расширением (cache/users/5/thumb_1.webp).- Поддерживаемые значения зависят от сборки Imagick: проверить —
php -r "print_r(Imagick::queryFormats('WEBP')); print_r(Imagick::queryFormats('AVIF'));". null(дефолт) — прежнее поведение: формат оригинала.- Рекомендация:
webp— безопасный дефолт для превью (поддержка браузерами ~98%);avif— точечно для тяжёлых изображений (энкодинг заметно дороже, поддержка ~95%).
Кастомная генерация имени
Загрузка файла по URL
Разница со старой системой
| Аспект | Было | Стало |
|---|---|---|
| Классы behavior | 2 (наследование) | 1 (final, без наследования) |
| Файловые операции | Разбросаны по behavior-ам | Изолированы в LocalStorage |
| Резолвинг путей | 30-строчный regex callback | PathResolver с strtr() |
| Конфигурация превью | Сырые массивы | ThumbnailProfile (typed VO) |
| Формат превью | Только формат оригинала | Per-профильный format (webp/avif/…) |
| Режим превью | Магическая строка 'thumbsType' |
ThumbnailMode enum |
| Драйвер изображений | Хардкод IMAGICK каждый вызов | Настраивается в конструкторе |
| Обработка ошибок превью | Нет (crash) | try/catch на каждый профиль |
| Скачивание по URL | 2 дублирующихся класса | 1 класс UrlDownloader |
| Пути в модели | @static/..., @staticHostName/... |
Относительные, storage добавляет базу |
| Конфиг в модели | filePath + fileUrl + thumbPath + thumbUrl | pathTemplate + thumbPathTemplate |