IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

[Symfony2][VichUploaderBundle] Mapping not found for field


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Inscrit en
    Mai 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 72
    Par défaut [Symfony2][VichUploaderBundle] Mapping not found for field
    Bonsoir;
    Je coince sur ce problème depuis le matin, je m'en sers de VichUploaderBundle pour gérer l'ulpload des fichiers...
    Récemment, j'ai créé une action DownloadFile pour mon contrôleur "CoursController" qui manipule l'entité CoursFile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    <?php
     
    namespace BacUp\GeneralBundle\Entity;
     
    use BacUp\GeneralBundle\Entity\Cours as BaseCours;
    use Doctrine\ORM\Mapping as ORM;
    use Symfony\Component\HttpFoundation\File\File ;
    use Vich\UploaderBundle\Mapping\Annotation as Vich;
    use Symfony\Component\Validator\Constraints as Assert;
     
     
    /**
     * CoursFile
     *
     * @ORM\Table()
     * @ORM\Entity(repositoryClass="BacUp\GeneralBundle\Entity\CoursFileRepository")
     * @Vich\Uploadable
     */
    class CoursFile extends BaseCours
    {
     
     
        /**
         * @var string
         *
         * @ORM\Column(name="name_file", type="string", length=255)
         */
        private $nameFile;
     
         /**
         * @Vich\UploadableField(mapping="files_cours", fileNameProperty="nameFile")
         * 
         * This is not a mapped field of entity metadata, just a simple property.
         * @Assert\File(
         *     maxSize = "10M",
         *     mimeTypes = {"application/pdf", "application/x-pdf", "application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/msword","image/png","image/jpeg"},            
         *     mimeTypesMessage = "يرجي التحقق من نوع الملف"
         * )
         *
         * @var File $coursFile
         */
        private $coursFile;
     
         /**
         * If manually uploading a file (i.e. not using Symfony Form) ensure an instance
         * of 'UploadedFile' is injected into this setter to trigger the  update. If this
         * bundle's configuration parameter 'inject_on_load' is set to 'true' this setter
         * must be able to accept an instance of 'File' as the bundle will inject one here
         * during Doctrine hydration.
         *
         * @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $cours
         */
        public function setCoursFile(File $cours = null)
        {
            $this->coursFile = $cours;
     
            if ($cours) {
                // It is required that at least one field changes if you are using doctrine
                // otherwise the event listeners won't be called and the file is lost
                //$this->setdateUpd(new \DateTime('now')) ;
            }
        }
     
         /**
         * @return File
         */
        public function getCoursFile()
        {
            return $this->coursFile;
        }
     
        /**
         * Set nameFile
         *
         * @param string $nameFile
         * @return CoursFile
         */
        public function setNameFile($nameFile)
        {
            $this->nameFile = $nameFile;
     
            return $this;
        }
     
        /**
         * Get nameFile
         *
         * @return string 
         */
        public function getNameFile()
        {
            return $this->nameFile;
        }
     
        public function __toString()
    {
        return $this->name;
    }
    }
    Et voilà mon action Download:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    public function downloadFileAction($id)
        {
            $em = $this->getDoctrine()->getManager();
     
            $cours = $em->getRepository('GeneralBundle:Cours')->find($id);
           /* var_dump($cours);
            die();*/
           // echo $entity->getTypeCours(); die();
           if(false === $this->get('security.context')->isGranted('ROLE_ADMIN'))
            {
                if(!$cours || $cours->getVal() == 0){
                    throw $this->createNotFoundException('هذا الدرس غير موجود.');
                }
           }
     
            $entity = $cours;
            $helper = $this->container->get('vich_uploader.templating.helper.uploader_helper');
             //var_dump($helper); die();
            // C'est là que ça pose problème !?
            $path = $helper->asset($entity, 'files_cours');
     
     
            $path= $this->get('kernel')->getRootDir() . '/../web'.$path; 
            // check if file exists
            if (!file_exists($path)) {
                throw $this->createNotFoundException();
            }
     
            // prepare BinaryFileResponse
            $response = new BinaryFileResponse($path);
            $response->trustXSendfileTypeHeader();
            $response->setContentDisposition(
                ResponseHeaderBag::DISPOSITION_INLINE,
                $cours->getNameFile(),
                iconv('UTF-8', 'ASCII//TRANSLIT', $cours->getNameFile())
            );
     
            return $response;
        }
    Et le outuput de cette action est décevant pour moi :
    Mapping not found for field "files_cours"
    500 Internal Server Error - MappingNotFoundException
    Je vous invite aussi à voir la config que je mets pour ce Bundle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    # Vich File Uploader Config    
    vich_uploader:
        db_driver: orm
        mappings:
            files_cours:
                uri_prefix:         /files/cours
                upload_destination: %kernel.root_dir%/../web/files/cours
                namer:              vich_uploader.namer_origname
     
                inject_on_load:     false
                delete_on_update:   true
                delete_on_remove:   true
            files_exos:
                uri_prefix:         /files/exos
                upload_destination: %kernel.root_dir%/../web/files/exos
                namer:              vich_uploader.namer_origname
     
                inject_on_load:     false
                delete_on_update:   true
                delete_on_remove:   true
            files_solexos:
                uri_prefix:         /files/solexos
                upload_destination: %kernel.root_dir%/../web/files/solexos
                namer:              vich_uploader.namer_origname
     
                inject_on_load:     false
                delete_on_update:   true
                delete_on_remove:   true
            files_exams:
                uri_prefix:         /files/exams
                upload_destination: %kernel.root_dir%/../web/files/cours
                namer:              vich_uploader.namer_origname
     
                inject_on_load:     false
                delete_on_update:   true
                delete_on_remove:   true
            files_solexams:
                uri_prefix:         /files/solexams
                upload_destination: %kernel.root_dir%/../web/files/cours
                namer:              vich_uploader.namer_origname
     
                inject_on_load:     false
                delete_on_update:   true
                delete_on_remove:   true
    Merci bien de me répondre

  2. #2
    Membre confirmé

    Inscrit en
    Mai 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 72
    Par défaut
    Des gens pour aider SVP?

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/03/2013, 08h47
  2. Erreur : "No mapping found for field 'id'"
    Par Sylvanocry dans le forum Doctrine2
    Réponses: 15
    Dernier message: 24/09/2012, 16h30
  3. Réponses: 5
    Dernier message: 28/01/2010, 21h41
  4. Réponses: 5
    Dernier message: 11/06/2009, 22h36
  5. Source not found for class ...
    Par singleProject dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 06/08/2008, 09h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo