Bonjour,

je suis en train de faire un formulaire qui permet d'ajouter un événement. Dedans j'ai une fonction d'upload d'image, que j'aimerais facultative, le pb est que quand je ne spécifie pas de fichier image j'ai l'erreur suivante (tout marche bien si je spécifie un fichier image) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
An exception occurred while executing 'INSERT INTO Image (extension, alt) VALUES (?, ?)' with params [null, null]:
 
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'extension' cannot be null
Pourtant dans ma classe Image j'ai bien ceci :

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
/**
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Bit\EventsBundle\Entity\ImageRepository")
 * @ORM\HasLifecycleCallbacks()
*/
class Image
{
//...
  /**
   * @ORM\PrePersist()
   * @ORM\PreUpdate()
   */
  public function preUpload()
  {
  {
    if (null === $this->file) 
   {
        echo 'upload';
        return;
    }
//...
}
(J'ai bien le upload du echo qui s'affiche et qui ne s'affiche pas si j'enlève le Haslifecyclecallbacks.)

Et j'ai cette relation avec la classe Image dans la classe Event :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
    /**
    * @ORM\OneToOne(targetEntity="Bit\EventsBundle\Entity\Image", cascade={"persist", "remove"})
    */
    private $image;
Vu qu'elle n'a pas l'option nullable="false" je ne vois pas pourquoi ça ne fonctionne pas.
J'ai l'impression que ça vient du EventController, ici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
            if ($form->isValid())
            {
                $em = $this->getDoctrine()->getManager();
                $em->persist($event);
                $em->flush();
Car il va persister en cascade l'image qui a ses attributs qui ne sont pas hydratés mais je ne vois pas ce qu'il faut changer pour ne pas lié d'image à l'évènement quand il n'y en a pas.

Je bloque vraiment depuis longtemps là dessus, je serais vraiment content si quelqu'un pouvait m'aider!
Merci d'avance!