0

I'd like to use Uploadable to save some images (i.e. profile picture for users). I'm using many other Doctrine Extensions already (softdeletable, timestampable, blameable, etc.) so I thought it would be nice to use this one as well.

However, I don't know how to set up my Forms. The StofDoctrineExtensionsBundle documentation gives this example:

$document = new Document();
$form = $this->createFormBuilder($document)
    ->add('name')
    ->add('myFile')
    ->getForm()
;

//(...)

$uploadableManager->markEntityToUpload($document, $document->getMyFile());

In this example, is name the name of the Document or the name of the file?

Atlantic18/DoctrineExtensions's documentation adds a path, name, mimeType and size to an entity, to there is no myFile attribute.

Can anybody explain how to set up a Form for a Uploadable Doctrine entity? I couldn't find any documentation or good example that helped me further.

Jasper N. Brouwer
  • 21,517
  • 4
  • 52
  • 76
Stephan Vierkant
  • 9,674
  • 8
  • 61
  • 97

1 Answers1

1

Entity

Like you've discovered, the documentation of DoctrineExtensions itself sheds some light on how to configure the Uploadable extension to use your entity.

Mainly by adding the @Gedmo\Uploadable annotation to your entity and @Gedmo\UploadableFilePath to the property that will contain the file path ($filePath for example).

Form

With the ->add() method of the form-builder you add fields to the form. The first parameter specifies the property-name of the corresponding entity. So ->add('myFile') would add a field for the property $myFile.

What you need to do is add a (file) field to the form for the property that will contain the file path ($filePath for example), and mark that property:

$form = $this->createFormBuilder($entity)
    ->add('filePath');

$uploadableManager->markEntityToUpload($entity, $entity->getFilePath());

In other words: myFile in your example should be replaced with filePath in my example, and whatever the actual property is in your real code.

Jasper N. Brouwer
  • 21,517
  • 4
  • 52
  • 76