Problème upload image quand le fichier n'est pas spécifié
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:
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:
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:
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:
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!