2017-04-18 4 views
1

Iam essayant de construire une structure de téléchargement plus intelligente pour mon application. jusqu'à présent j'avais le code pour télécharger des fichiers dans le contrôleur et tout était plus manuel. Maintenant, je veux utiliser le VichUploader dans Symfony, mais j'ai des problèmes pour l'implémenter avec plusieurs fichiers. D'abord, je n'ai pas d'entité avec un fichier mais une entité qui contient plusieurs entités de fichier. Pour être plus clair: L'entité Document a une relation oneToMany à File. Donc, je construis une forme avec un CollectionType:formulaire symfony avec de nouveaux fichiers via Vich Uploader

$builder->add('files', Type\CollectionType::class, [ 
    'entry_type' => Type\FileType::class 
]) 

Mais parce qu'il n'y a pas encore fichier quand j'ajoute un nouveau document, aucun champ de téléchargement est affiché. Et même s'il y a déjà des fichiers (sur le formulaire d'édition), il ne devrait pas y avoir de champs de téléchargement affichés, mais des champs de texte avec des noms de fichiers.

Comment puis-je y parvenir? Est-ce que je dois encore ajouter un champ umapped files_new() avec un FileType multiple? Alors le truc automatique de VichUploader ne fonctionnerait pas.

Répondre

0

Si vous passez un objet fichier vide, vous devez avoir votre entrée html fil comme il est une collection

Dans votre contrôleur (je n'ai pas votre code)

$entity = new Entity() 
$entity->addFile(new FileEntity())//Add an empty file object 


$form = $this->createForm(YourType::class, $entity); 
$form->handleRequest($request); 
+0

ok qui fonctionne, mais J'ai toujours le problème principal avec le téléchargement multiple de dossier. Mais comme cela n'a pas vraiment été souligné dans ma question, je vais en commencer une nouvelle et accepter votre réponse – Asara