Upload plusieurs fichiers sur la même entité

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous,

Tout d'abord félicitation aux staffs pour ce super site , en espérant une grand réussite .

Donc venant en à mon smoothie (euh … soucis :p) :

Je dispose d'une entité permettant l'upload de 3 images , pour permettre ceci j'ai utilisé le cookbook symfony suivant : http://symfony.com/fr/doc/current/cookbook/doctrine/file_uploads.html

Cependant, sur cet exemple , il permet l'upload de seulement 1'image vu que la propriété $file sera accordé seulement à 1 champ de ma base ?

Comment puis-je faire pour régler le problème ?

Merci d'avance de vos réponses

+0 -0

Hello,

Simple, tu fais plusieurs propriétés. file, file1, foo, camion… Peu importe son nom. Ce n'est pas parce que la propriété s'appelle file que Doctrine / Symfony se diront d'eux-même "tiens c'est un fichier".

+0 -0

Ben ce qu'ils te proposent c'est en effet une façon de faire pour un fichier. Mais tu n'es pas tenu à faire comme ils disent ; tu peux te contenter d'avoir juste un path / fichier uploadé, et ensuite avoir une sorte de service qui peut te ressortir le tout.

Ou alors, tu peux aussi avoir ce genre de méthode dans ton entité, mais en spécifiant en paramètre le path sur lequel il faut agir :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?php
class MonEntite
{
    private $file1;
    private $camion;

    public function getAbsolutePath($path)
    {
        return null === $path ? null : $this->getUploadRootDir() . '/' . $path;
    }

    public function getWebPath($path)
    {
        return null === $path ? null : $this->getUploadDir() . '/' . $path;
    }

    // ...
}
+0 -0

Salut !

Il y a une autre possibilité qui serait de créer une collection d'images, qui pourrait donc être une solution si chacune des trois images n'a pas de rôle précis. Une collection peut être limitée dans sa taille, d'après ce que j'ai vu dans la documentation.

Edit

Je pensais en fait à une entité Image qui contiendrait les méthodes de génération de chemin et d'upload lors des persistance et mise à jour, et ensuite, collection d'images.

Ça fonctionne aussi pour des fichiers simples  ;)

+0 -0

Merci de vos réponses précises mais j'ai trouvé une autre solution qui reprend l'idée de Talus :

Exemple pour la fonction de preupload

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<?php
    public function preUpload()
    {   

        if (null !== $this->file) {
            // faites ce que vous voulez pour générer un nom unique
            //$this->image = $this->file.'.'.$this->file->guessExtension();
            $this->logoBaseline = $this->file->getClientOriginalName();         
            }
        if (null !== $this->file2) {
            $this->fondAccueil = $this->file2->getClientOriginalName();
            }
        if (null !== $this->file3) {    
            $this->logoFond = $this->file3->getClientOriginalName();
        }
    }
?>

Merci à tous

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte