Bonjour,

J'ai créé un formulaire (qui est un commentaire qu'on insère pour un article) très simple : nom + email + une description à saisir.

Hors, ce formulaire est destiné à un article spécifique. Je connais son "id" car je le possède dans mon url, et cette id doit etre inséré dans ma table, car c'est une clef étrangère.

url
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
http://localhost/tutoriel-zf/public/index/voirarticle/id/1
Pour être plus clair, voici le code:

shéma de la table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
CREATE TABLE `commentaire` (
	`id` INT NOT NULL AUTO_INCREMENT ,
	`nom` VARCHAR( 255 ) NOT NULL ,
	`email` VARCHAR( 255 ) NOT NULL ,
	`contenu` VARCHAR( 255 ) NOT NULL ,
	`idArticle` INT NOT NULL, 	
	PRIMARY KEY ( `id` ),
	KEY `com_art_fk_constraint` (`idArticle`),
	CONSTRAINT `com_art_fk_constraint` FOREIGN KEY (`idArticle`)
	REFERENCES `articles` (`id`)
) 	ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8_unicode;
indexController
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
 
	//ajouter un nouveau commentaire
	function addcomAction(){
		$this->view->title="ajouter com";
		$formCom = new CommentaireForm();
		if($this->_request->isPost()){
			$formData = $this->_request->getPost();
			$formCom->populate($formData);
			$formData=$formCom->getValues();
			if($formCom->isValid($formData)){
				$com = new Commentaire();
				$commentaire = $com->createRow($formData);
				if($commentaire){
					$id=$commentaire->save();
					$this->_redirect('/index/voirarticle');
				}
			}
		}
		$this->view->formCom=$formCom;
	}
CommentaireForm.php
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
 
class CommentaireForm extends Zend_Form{
	public function __construct($options=null){
		parent::__construct($options);
 
		$this->setName('ajouterCommentaire');
		$nom = new Zend_Form_Element_Text('Nom');
		$nom->setLabel('nom')
				->setRequired(true);		
		$email=new Zend_Form_Element_Text('Email');
		$email->setLabel('email')	
					->setRequired(True);
		$contenu= new Zend_Form_Element_Textarea('Contenu');
		$contenu->setLabel('commentaire')
					->setRequired(True);
		$submit = new Zend_Form_Element_Submit('envoyer');
		$submit->setLabel('envoyer');
		$this->addElements(array($nom,$email,$contenu,$submit));
	}
}
J'insère bien les différents champs sauf l'idArticle, ce qui provoque une erreur.

Merci pour votre aide