atom-php / uploader-bundle
Installs: 1 693
Dependents: 0
Suggesters: 0
Security: 0
Stars: 14
Watchers: 5
Forks: 4
Open Issues: 5
Type:symfony-bundle
Requires
- php: >=5.5.9
- atom-php/uploader: ~1.5
Requires (Dev)
- behat/behat: ~3.3
- doctrine/doctrine-bundle: ~1.6
- doctrine/doctrine-cache-bundle: ~1.3
- doctrine/orm: ~2.5
- oneup/flysystem-bundle: ~1.8
- phpunit/phpunit: ~5.7
- sensio/distribution-bundle: ~5.0
- sensio/framework-extra-bundle: ~3.0
- symfony/monolog-bundle: ~3.0
- symfony/swiftmailer-bundle: ~2.4
- symfony/symfony: ~3.2
- twistor/flysystem-stream-wrapper: ~1.0
Suggests
- doctrine/doctrine-bundle: You can use doctrine as a persistence layer for your business objects.
- oneup/flysystem-bundle: You can use flysystem as a filesystem adapter instead the local filesystem adapter.
- twistor/flysystem-stream-wrapper: Use it if you use flysystem and want mount a filesystem at a file info resolution.
README
Symfony пакет, который обеспечивает сохранение загруженных файлов.
Мотивация
Проект создавался с целью облегчить загрузку файлов, используя встраиваемые объекты doctrine. Но он не зависит от doctrine и его можно использовать с другими хранилищами данных, даже с простыми массивами.
Возможности
- Автоматическое создание имён и сохранение файлов;
- Внедрение файла обратно в объект, когда он будет загружен из хранилища данных, как экземпляр
\SplFileInfo
; - Внедрение URI в объект, когда он будет загружен из хранилища данных;
- Удаление файла из файловой системы при удалении (или обновлении) объекта из хранилища данных.
Весь функционал настраиваемый.
Неиспользуемые сервисы удаляются на этапе оптимизации DIC, а используемые сервисы инициализируются только тогда, когда они понадобятся.
Быстрый старт
Быстрый старт подходит для RAD разработки Для более гибкого использования читайте документацию
Установка
composer require atom-php/uploader-bundle
Включение
# app/AppKernel.php public function registerBundles() { $bundles = [ ... new Atom\UploaderBundle\AtomUploaderBundle(), ... ]; }
Использование
AtomUploaderBundle представляет собой готовый встраиваемый объект для быстрой разработки.
Просто встройте его в сущность:
# src/Entity/User.php namespace Acme\Entity; use Doctrine\ORM\Mapping\Embedded; class User { ... /** * @Embedded(class="Atom\Uploader\Model\Embeddable\FileReference") */ private $avatar; }
Готово! Теперь прикреплённые файлы автоматически сохраняются в файловой системе, по умолчанию в "%kernel.root_dir%/../web/uploads"
Примеры
Сохранение загруженного файла
$file = // экземпляр \SplFileInfo $em = // entity manager $avatar = new Atom\Uploader\Model\Embeddable\FileReference($file); $user = new Acme\Entity\User(); $user->setAvatar($avatar); // Генерируется имя файла и сохраняется в файловой системы. $em->persist($user); // Если все хорошо то ничего не делается, иначе файл удаляется. $em->flush();
Обновление
$file = // экземпляр \SplFileInfo $user = // экземпляр Acme\Entity\User $avatar = new Atom\Uploader\Model\Embeddable\FileReference($file); $user->setAvatar($avatar); // Генерируется имя файла и сохраняется в файловой системы. // Удаляется старый файл если имя файла не совпадает с новым. $em->flush();
Получение
// внедряется URI и информация о файле. $user = $em->find('Acme\Entity\User', 1);
Внедрение информации о файле (\SplFileInfo) по умолчанию отключено, его можно включить в
config.yml
:
atom_uploader: mappings: Atom\Uploader\Model\Embeddable\FileReference: inject_file_info_on_load: true
Удаление
$user = // экземпляр Acme\Entity\User $em->setAvatar(null); // или $em->remove($user); // Файл удаляется. $em->flush();
Документация
См. src/Resources/doc/ru/index.md