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 :

Upload de fichier


Sujet :

Symfony PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2017
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Upload de fichier
    Bonjour à tous,

    J'ai fait un formulaire afin d'uploader une photo mais il me met que le champ est vide malgré le fait que j'ai regardé la doc et fait quelques recherches afin de pouvoir se faire.
    J'aimerais savoir ce qui pèche dans mon code afin de ne pas devoir mettre la valeur à null dans mon code, donc dans ma base de données.

    voici le code concerné pour mon entitée :
    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
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
     
    class OuvragesEchanges {
     
     
        /**
         * @var string
         *
         * @ORM\Column(name="photos_ouvrage_path", type="string", length=255)
         */
        private $photosOuvragePath;
     
        /**
         * @Assert\File(
         *      maxSize = "1024k",
         *      maxSizeMessage = "Votre fichier est trop volumineux, max 1 MO !",
         *      mimeTypes ={"image/jpeg","image/png","image/gif"},
         *      mimeTypesMessage = "Merci d'uploader un fichier de type image !"
         * )
         */
        private $photosOuvrageFile;
     
     
        /**
         * Set photosOuvragePath
         *
         * @param string $photosOuvragePath
         * @return OuvragesEchanges
         */
        public function setPhotosOuvragePath($photosOuvragePath)
        {
            $this->photosOuvragePath = $photosOuvragePath;
     
            return $this;
        }
     
        /**
         * Get photosOuvragePath
         *
         * @return string 
         */
        public function getPhotosOuvragePath()
        {
            return $this->photosOuvragePath;
        }
     
     
        /**
         * @return mixed
         */
        public function getPhotosOuvrageFile(){
            return $this->photosOuvrageFile;
        }
     
        /**
         * @param mixed $photosOuvrageFile
         */
        public function setPhotosOuvrageFile(UploadedFile $photosOuvrageFile) { //$photosOuvrageFile devient du type UploadedFile
            $this->photosOuvrageFile = $photosOuvrageFile;
        }
     
        //retourner le chemin absolu d'un fichier
        public function getAbsolutePath(){
            return null === $this->photosOuvragePath ? null : $this->getUploadRootDir().'/'.$this->photosOuvragePath;
        }
     
        //retourner le chemain relatif d'un fichier (methode utilisee dans les templates Twig)
        public function getWebPath(){
            return null === $this->photosOuvragePath ? null : $this->getUploadDir().'/'.$this->photosOuvragePath;
        }
     
        protected function getUploadRootDir(){
            return __DIR__.'/../../../../web/'.$this->getUploadDir();
        }
     
        protected function getUploadDir(){
            return "uploads/images";
        }
     
        /**
         * @ORM\PrePersist()
         * @ORM\PreUpdate()
         */
        public function preUpload(){
            if (null !== $this->photosOuvrageFile){
                //Avant l'uploads on change le nom du fichier téléchargé via des méthodes CRYPT
                $this->photosOuvragePath = sha1(uniqid(mt_rand(),true)).'.'.$this->photosOuvrageFile->guessExtension();
                // donne par exemple = "55112sdfs2111qdrgthhztq412.jpg"
            }
        }
     
        /**
         * @ORM\PrePersist()
         * @ORM\PreUpdate()
         */
        public function upload(){
            //si pas d'image on stoppe la fonction
            if (null === $this->photosOuvrageFile){
                return;
            }
            //si fichier déplacement vers le répertoire uploads
            $this->photosOuvrageFile->move($this->getUploadRootDir(),$this->photosOuvragePath);
            //puis on vide l'attribut
            $this->photosOuvrageFile = null;
        }
     
        /**
         * @ORM\PostRemove()
         */
        public function removeUpload(){
            if ($file = $this->getAbsolutePath()){
                unlink($file);
            }
        }
    Le formulaire que j'utilise :
    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
     
        /**
         * @param FormBuilderInterface $builder
         * @param array $options
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder->add('titreOuvrage',TextType::class,array('label'=>'Nom de l\'ouvrage','attr'=>array('class'=>'form-control')))
                    ->add('resumeOuvrage',TextareaType::class,array('label'=>'Résumé de l\'ouvrage','attr'=>array('class'=>'form-control')))
                    ->add('auteur',CollectionType::class,array('entry_type'=>AuteursType::class,'allow_add'=>true,'allow_delete'=>true,'prototype'=>true))
                    ->add('editeur',EntityType::class,array('label'=>'Sélectionnez l\'éditeur','attr'=>array('class'=>'form-control'),'class'=>'SB\MainBundle\Entity\Editeurs','choice_label'=>'libelle_editeur'))
                    ->add('etat',EntityType::class,array('label'=>'Cochez l\'état dans lequel se trouve votre ouvrage','class'=>'SB\MainBundle\Entity\EtatsOuvrages','choice_label'=>'libelle_etat','expanded'=>true))
                    ->add('categorie',EntityType::class,array('label'=>'Selectionnez une catégorie','attr'=>array('class'=>'form-control'),'class'=>'SB\MainBundle\Entity\Categories','choice_label'=>'libelle_categorie'))
                    ->add('genre',EntityType::class,array('label'=>'Cochez un ou plusieurs genre','class'=>'SB\MainBundle\Entity\Genres','choice_label'=>'libelle_genre','multiple'=>true,'expanded'=>true));
                    //->add('photosOuvragePath',TextType::class,array('label'=>'Chemin de votre photo','attr'=>array('class'=>'form-control')))
            if ($builder->getData()->getId() == false){
                $builder->add('photosOuvrageFile',FileType::class,array('label'=>'Ajouter une photo'));
            }
            ;
        }
    et le code de mon contrôleur :

    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
     
        public function createNewOuvrageEchangeAction(Request $request){
            $user = $this->get('security.token_storage')->getToken()->getUser();
            $ouvrage = new OuvragesEchanges($user);
     
            $em = $this->getDoctrine()->getManager();
            $form = $this->createForm(OuvragesEchangesType::class,$ouvrage);
            $formHandler = new FormHandler($request,$em,$form);
            //si validation du formulaire et données >> ok !
            if ($formHandler->process()){
                return $this->redirect($this->generateUrl('sb_main_ouvrage_echange_show',['id'=>$ouvrage->getId()]));
            }
     
            $datas = array('form'=>$form->createView());
            return $this->render('SBMainBundle:Main:createEchange.html.twig',$datas);
        }
    Et voici l'erreur q'il m'affiche : SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ 'photos_ouvrage_path' ne peut être vide (null). J'ai déjà regardé une autre sujet qui a déjà été ouvert mais cela ne m'a pas aidé :'(.

    Merci de votre aide !

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2013
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2013
    Messages : 739
    Points : 1 022
    Points
    1 022
    Par défaut
    ok,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        /**
         * @var string
         *
         * @ORM\Column(name="photos_ouvrage_path", type="string", length=255, nullable=true)
         */
        private $photosOuvragePath;
    ensuite :
    > php app/console doctrine:schema:update --force

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Ca ne suffit pas
    Bonjour

    Pour l'upload d'un fichier, il faut rajouter plusieurs choses

    - le form doit être en POST et en multipart, ou si tu le soumets en ajax, il faut un truc comme ça dans ta commande jQuery.ajax :
    'processData': false, // Pour file upload avec FormData ci-dessous
    'contentType': false, // Pour file upload avec FormData ci-dessous
    'data': new FormData(jQuery("form")[0]),

    - tu dois écrire un peut de code PHP pour réceptionner le fichier, et le stocker dans un endroit de ton choix

    Je te conseille de lire la doc symfony, tout est expliqué

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2017
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Voici le code de mon formulaire, je pense que cela sera plus clair avec .

    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
     
    <form id="form_ouvrage" class="form" action="" method="post" {{ form_enctype(form) }}>
        {{ form_widget(form._token) }}
        <div>
            <div class="form-group">
                <span class="label-lg">{{ form_label(form.titreOuvrage)}}</span>
                {{ form_errors(form.titreOuvrage) }}
                {{ form_widget(form.titreOuvrage) }}
            </div>
            <div class="form-group">
                <span class="label-lg">{{ form_label(form.resumeOuvrage)}}</span>
                {{ form_errors(form.resumeOuvrage) }}
                {{ form_widget(form.resumeOuvrage) }}
            </div>
            <div class="form-group">
                {% set auteurs = form.auteur.vars.prototype %}
                {#{{ form_row(form.auteur.vars.prototype) }}#}
                {#<span class="label-lg">{{ form_label(auteur) }}</span>#}
                {{ form_errors(auteurs) }}
                {{ form_widget(auteurs) }}
                <ul id="auteurs_list" data-prototype="{{ form_widget(auteurs) }}">
                    {% for auteur in form.auteur %}
                        <li>
                            {{ form_errors(auteur) }}
                            {{ form_widget(auteur) }}
                        </li>
                    {% endfor %}
                </ul>
                <a id="add_new_auteur" class="btn" href="#">Ajouter un auteur</a>
            </div>
     
            <div class="form-group">
                <span class="label-lg">{{ form_label(form.editeur)}}</span>
                {{ form_errors(form.editeur) }}
                {{ form_widget(form.editeur) }}
            </div>
            <div class="form-group">
                <span class="label-lg">{{ form_label(form.etat)}}</span>
                {{ form_errors(form.etat) }}
                {{ form_widget(form.etat) }}
            </div>
            <div class="form-group">
                <span class="label-lg">{{ form_label(form.categorie)}}</span>
                {{ form_errors(form.categorie) }}
                {{ form_widget(form.categorie) }}
            </div>
            <div class="form-group">
                <span class="label-lg">{{ form_label(form.genre)}}</span>
                {{ form_errors(form.genre) }}
                {{ form_widget(form.genre) }}
            </div>
            {% if form.photosOuvrageFile is defined %}
                <div class="form-group">
                    <span class="label-lg">{{ form_label(form.photosOuvrageFile)}}</span>
                    {{ form_errors(form.photosOuvrageFile) }}
                    {{ form_widget(form.photosOuvrageFile) }}
                </div>
            {% endif %}
        </div>
        <input class="btn btn_valide_ajout_ouvrage pull-right" type="submit" value="Valider">
    </form>
     
    <script>
        {#var auteurCount = {{ auteurs | length }}#}
     
        var auteurCount = $('#ouvrages_echanges_auteur___name___nomAuteur').val();
     
        console.log(auteurCount);
     
        $(function(){
            $('#auteurs_list').find('li').each(function() {
                addAuteurFormDeleteLink($(this));
            });
     
            $("#add_new_auteur").click(function(e){
                e.preventDefault();
                var AuteurList = $('#auteurs_list');
     
                // Parcourt le template prototype
                var newWidget = AuteurList.attr('data-prototype');
                newWidget = newWidget.replace(/__name__/g,auteurCount);
                auteurCount++;
                var newLi = $('<li></li>').html(newWidget);
                newLi.appendTo($('#auteurs_list'));
                return false;
            })
     
        });
     
        function addAuteurFormDeleteLink($auteurFormLi) {
            var $removeFormAuteur = $('<a class="btn btn_sup_auteur" href=#">Supprimer cet auteur</a>');
            $auteurFormLi.append($removeFormAuteur);
            $removeFormAuteur.on('click',function (e) {
                e.preventDefault();
                $auteurFormLi.remove();
            })
        }
    </script>
    The_Fakir le form est déjà en méthode POST , et je suis allé voir ici dans la doc.

    MehrezLabidi, je veux éviter de mettre ce champ à null comme je l'ai dit dans mon premier post .
    J'aimerais savoir ce qui pèche dans mon code afin de ne pas devoir mettre la valeur à null dans mon code, donc dans ma base de données.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Tirkal Voir le message
    Voici le code de mon formulaire, je pense que cela sera plus clair avec .

    ../..

    The_Fakir le form est déjà en méthode POST , et je suis allé voir ici dans la doc.
    Ok, mais il manque du code php comme cela côté réception PHP :
    (il y est sur la page que vous êtes allé voir)

    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
     
     
            if ($form->isSubmitted() && $form->isValid()) {
                // $file stores the uploaded PDF file
                /** @var Symfony\Component\HttpFoundation\File\UploadedFile $file */
                $file = $product->getBrochure();
     
                // Generate a unique name for the file before saving it
                $fileName = md5(uniqid()).'.'.$file->guessExtension();
     
                // Move the file to the directory where brochures are stored
                $file->move(
                    $this->getParameter('brochures_directory'),
                    $fileName
                );
     
                // Update the 'brochure' property to store the PDF file name
                // instead of its contents
                $product->setBrochure($fileName);
     
                // ... persist the $product variable or any other work
     
                return $this->redirect($this->generateUrl('app_product_list'));
            }

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2017
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Je le met en plus de cela dans mon controller ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if ($formHandler->process()){
                return $this->redirect($this->generateUrl('sb_main_ouvrage_echange_show',['id'=>$ouvrage->getId()]));
            }
    ou après ?

    J'ai essayé avec, j'ai toujours le même problème, et sans il ne me prend pas en compte l'enregistrement du formulaire. Il me retourne un nouveau formulaire, vide.

    Voilà ce que ça donne avec mes changements :

    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
     
    public function createNewOuvrageEchangeAction(Request $request){
            $user = $this->get('security.token_storage')->getToken()->getUser();
            $ouvrage = new OuvragesEchanges($user);
     
            $em = $this->getDoctrine()->getManager();
            $form = $this->createForm(OuvragesEchangesType::class,$ouvrage);
    //        $formHandler = new FormHandler($request,$em,$form);
    //        //si validation du formulaire et données >> ok !
    //        if ($formHandler->process()){
    //            return $this->redirect($this->generateUrl('sb_main_ouvrage_echange_show',['id'=>$ouvrage->getId()]));
    //        }
     
            if ($form->isSubmitted() && $form->isValid()) {
                // $file stores the uploaded img file
                /** @var Symfony\Component\HttpFoundation\File\UploadedFile $file */
                $file = $ouvrage->getPhotosOuvrageFile();
     
                // Generate a unique name for the file before saving it
                $fileName = md5(uniqid()).'.'.$file->guessExtension();
     
                // Move the file to the directory where brochures are stored
                $file->move($this->getParameter('brochures_directory'), $fileName);
     
                // Update the 'ouvrage' property to store the img file name
                // instead of its contents
                $ouvrage->setPhotosOuvrageFile($fileName);
     
                // ... persist the $ouvrage variable or any other work
     
                return $this->redirect($this->generateUrl('sb_main_ouvrage_echange_show',['id'=>$ouvrage->getId()]));
            }
     
            $datas = array('form'=>$form->createView());
            return $this->render('SBMainBundle:Main:createEchange.html.twig',$datas);
        }

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par Tirkal Voir le message
    Je le met en plus de cela dans mon controller ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if ($formHandler->process()){
                return $this->redirect($this->generateUrl('sb_main_ouvrage_echange_show',['id'=>$ouvrage->getId()]));
            }
    ou après ?

    J'ai essayé avec, j'ai toujours le même problème, et sans il ne me prend pas en compte l'enregistrement du formulaire. Il me retourne un nouveau formulaire, vide.
    Il faut faire, dans l'ordre :
    1. Le process du form
    2. Le test if ($form->isSubmitted() && $form->isValid())
    3. La manip avec le move()
    4. Le $ouvrage->setPhotosOuvrageFile($fileName);

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2017
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    J'ai toujours le même problème avec le code que vous m'avez conseillé d'ajouter. Voilà ce qu'il donne :

    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
     
        public function createNewOuvrageVenteAction(Request $request){
            $user = $this->get('security.token_storage')->getToken()->getUser();
            $ouvrage = new OuvragesVentes($user);
     
            $em = $this->getDoctrine()->getManager();
            $form = $this->createForm(OuvragesVentesType::class,$ouvrage);
            $formHandler = new FormHandler($request,$em,$form);
            //si validation du formulaire et données >> ok !
            if ($formHandler->process()){
                return $this->redirect($this->generateUrl('sb_main_ouvrage_vente_show',['id'=>$ouvrage->getId()]));
            }
     
            if ($form->isSubmitted() && $form->isValid()) {
                // $file stores the uploaded img file
                /** @var Symfony\Component\HttpFoundation\File\UploadedFile $file */
                $file = $ouvrage->getPhotosOuvrageFile();
     
                // Generate a unique name for the file before saving it
                $fileName = md5(uniqid()).'.'.$file->guessExtension();
     
                // Move the file to the directory where brochures are stored
                $file->move($this->getParameter('brochures_directory'), $fileName);
     
                // Update the 'ouvrage' property to store the img file name
                // instead of its contents
                $ouvrage->setPhotosOuvrageFile($fileName);
     
                // ... persist the $ouvrage variable or any other work
     
                return $this->redirect($this->generateUrl('sb_main_ouvrage_echange_show',['id'=>$ouvrage->getId()]));
            }
     
            $datas = array('form'=>$form->createView());
            return $this->render('SBMainBundle:Main:createVente.html.twig',$datas);
        }
    An exception occurred while executing 'INSERT INTO ouvrages_ventes (titre_ouvrage, resume_ouvrage, photos_ouvrage_path, prix_ouvrage, is_delete, etats_ouvrages_id, editeur_id, id_categorie, id_user) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)' with params ["Les Mis\u00e9rables", "C'est l'histoire de Causette, une jeune fille recueillit et maltrait\u00e9 par les T\u00e9nardier. Un jour elle fait la rencontre de Jean Valjean et d\u00e9cide de le suivre. Les mis\u00e9rables raconte son histoire.", null, "12", null, 4, 1, 1, 1]:

    SQLSTATE[23000]: Integrity constraint violation: 1048 Le champ 'photos_ouvrage_path' ne peut être vide (null)
    Et voilà mon erreur. Je ne veux pas mettre à null ce champ, il est important pour le site. Mais si je me vois forcé de le faire, malheureusement je le ferais. Cependant je souhaite toujours connaître la raison de mon problème.

    Merci de ton aide The_Fakir

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2017
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    J'ai trouvé ce qu'il n'allait pas. Il me manquait cette ligne dans mon entity juste en dessous de @ORM/Entity :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     * @ORM\HasLifecycleCallbacks()
    Problème résolu !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FTP] Problème pour uploader un fichier
    Par Crazyblinkgirl dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/01/2008, 22h21
  2. Upload de fichier par XMLHTTP
    Par Immobilis dans le forum ASP
    Réponses: 6
    Dernier message: 21/01/2005, 17h02
  3. upload de fichier
    Par 120 dans le forum ASP
    Réponses: 16
    Dernier message: 21/06/2004, 12h07
  4. Upload de fichiers sur un ftp
    Par Crazyblinkgirl dans le forum ASP
    Réponses: 10
    Dernier message: 20/06/2004, 11h55
  5. Upload de fichiers
    Par GDVL dans le forum ASP
    Réponses: 4
    Dernier message: 03/06/2004, 12h44

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