rossriley/doctrine-uploader

Small package to handle file uploads via a save to a Flysystem Handler

1.0 2015-10-29 15:31 UTC

This package is not auto-updated.

Last update: 2024-04-13 13:41:25 UTC


README

Doctrine Uploader

This is a very basic composer package designed to slot into an existing Doctrine ORM based project.

The listener takes care of handling file uploads and saves the resulting path to the Entity.

How to bootstrap

Define your entity targets.

This is an array in the format Entity\Class=>[field1,field2] for example.

$targets = [
    'Myproject\Entity\User' => ['logo','profilepic'],
    'Myproject\Entity\Company' => ['logo']
];
Provide a filesystem handler

This project uses Flysystem(http://flysystem.thephpleague.com) to handle saves. The simplest usage is as follows.

$fsAdapter = new League\Flysystem\Adapter\Local('/path/to/save');
$filesystem = new League\Flysystem\Filesystem($fsAdapter);
$handler = Handler($filesystem);
Add the listener to your EntityManager setup with the above setup
use Doctrine\Uploader\Listener;

$em->getEventManager()->addEventListener([Doctrine\ORM\Events::preUpdate], new Listener($handler, $targets));

Putting it all together.
use League\Flysystem\Adapter\Local;
use League\Flysystem\Filesystem;
use Doctrine\Uploader\Listener;
use Doctrine\Uploader\Handler;

$targets = [
    'Myproject\Entity\User' => ['logo','profilepic'],
    'Myproject\Entity\Company' => ['logo']
];

$fsAdapter = new Local('/path/to/save');
$filesystem = new Filesystem($fsAdapter);
$handler = Handler($filesystem);

$em->getEventManager()->addEventListener([Doctrine\ORM\Events::preUpdate], new Listener($handler, $targets));