Hello,
When I want to create a new object with one of my form, Doctrine take me an error :
Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'
Creating worked previously, but I don't know what I have change to have an error now.
My schema for ID :
Logement:
connection: doctrine
actAs: [Timestampable]
tableName: logement
columns:
id:
type: integer(2)
unsigned: true
primary: true
autoincrement: true
In my forms : BaseLogementForm.class.php
$this->setWidgets(array(
'id' => new sfWidgetFormInputHidden(),
... other widgets);
$this->setValidators(array(
'id' => new sfValidatorCHoice(array('choices' => array($this->getObject()->get('id')), 'empty_value' => $this->getObject()->get('id'), 'required' => false)),
... other validators);
Edit :
I give you, my functions
public function executeNew(sfWebRequest $request){
// Retourne un formulaire pour la création d'un nouveau logement
$this->form = new logementForm();
}
public function executeCreate(sfWebRequest $request){
// Génére un formulaire pour la création d'un nouveau logement
$this->forward404Unless($request->isMethod(sfRequest::POST));
$this->form = new logementForm();
$this->processForm($request, $this->form);
// Affichage du formulaire dans le template "newSuccess"
$this->setTemplate('new');
}
protected function processForm(sfWebRequest $request, sfForm $form){
// Vérifie les données d'un formulaire et les enregistre dans la base
$form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
// On teste pour savoir dans quel cas on se situe : création/modification
// Si il s'agit d'une création :
if ($form->getObject()->isNew()) {
// Vérification de la validité des données entrées
if ($form->isValid()) {
// Si les données sont valides, enregistrement dans la base
$logement = $form->save();
// On vérifie que l'enregistrement à bien eu lieu
if ($form->save()) {
$this->getUser()->setFlash('notice', 'Création du logement effectuée');
}
else {
$this->getUser()->setFlash('error', 'Erreur lors de la création du logement');
}
// Redirection vers la fiche du logement nouvellement créé
$this->redirect('logement/fiche?id='.$logement->getId());
}
// Sinon affichage d'un message d'erreur
else {
$this->getUser()->setFlash('error', 'Informations saisies non valides');
}
}