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
Pour être plus clair, voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2http://localhost/tutoriel-zf/public/index/voirarticle/id/1
shéma de la table
indexController
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;
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 //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; }
J'insère bien les différents champs sauf l'idArticle, ce qui provoque une erreur.
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)); } }
Merci pour votre aide
Partager