Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je rencontre un problème que j'ai vraiment du mal a comprendre.
Dans le cadre d'un développement d'un site web, sur mes pages principales j'ai des formulaires qui font des insertions en base etc etc.. Tout fonctionne bien.
Je développe un back office, je change mon layout dans mon controller, puis je commence à construire les différents modules. Simplement je fais des copier coller de mes précédemments formulaires, mais la ca ne fonctionne plus. Je ne recupère plus mes valeurs du formulaire, il m'affiche dans la barre d'adresse les éléments alors qu'en partie public ca ne me le faisait pas..
class AdminController extends Zend_Controller_Action { function init(){ $this->_helper->layout->setLayout('adminlayout'); } function indexAction() { $this->view->title = "Module Accueil"; $accueil = new Accueil(); $this->view->accueils = $accueil->getAccueilAll(); $this->view->form = $this->getFormAccueil(); } private function getFormAccueil(){ $this->view->title="ajouter"; $form = new AcceuilForm(); echo '<pre>';print_r($form->getValues());echo '</pre>'; if($this->_request->isPost()){ $formData = $this->_request->getPost(); $form->populate($formData); $formData=$form->getValues(); if($form->isValid($formData)){ $acc = new Accueil(); $accueil= $acc->createRow($formData); if($accueil){ $accueil->save(); } } } return $form; }
class AccueilForm extends Zend_Form { public function __construct($options=null) { parent::__construct($options); $this->setName('ajout accueil'); //$idUser = new Zend_Form_Element_Hidden('idUsers'); $titre = new Zend_Form_Element_Text('titre'); $titre->setLabel('titre') ->setRequired(true) ->addFilter('StringTrim') ->addFilter('StripTags') ->addValidator('NotEmpty'); $resume = new Zend_Form_Element_Text('resume'); $resume->setLabel('resume') ->setRequired(True) ->addFilter('StringTrim') ->addFilter('StripTags') ->addValidator('NotEmpty'); $submit = new Zend_Form_Element_Submit('envoyer'); $submit->setLabel('envoyer'); $this->addElements(array($titre,$resume,$submit)); }
http://localhost/webspace/public/admin?titre=test&resume=test&envoyer=envoyer
apparemment, en désactivant mon layout et en laissant celui par défaut, ca a l air de fonctionner..
et le code source de ma page généré :
<form id="ajoutaccueil" enctype="application/x-www-form-urlencoded" action="" method="[b]post[/b]"><dl class="zend_form"> <dt><label for="titre" class="required">titre</label></dt> <dd> <input type="text" name="titre" id="titre" value=""></dd> <dt><label for="resume" class="required">resume</label></dt> <dd> <input type="text" name="resume" id="resume" value=""></dd> <dt> </dt><dd> <input type="submit" name="envoyer" id="envoyer" value="envoyer"></dd></dl></form>
En faite, mon action est vide, c normal ?
action=""
donc evidemment je ne passe jamais dans mon if, et n'affiche pas mon echo
if($this->_request->isPost()){ echo "ok";
C'est bizarre
Dernière modification par gu1gui (05-06-2009 15:31:16)
Hors ligne
effectivement c'est étonnant. Je n'ai jamais rencontré de problème comme ça pour ma part.
Par contre, que ton attribut "action" soit vide ça c'est normal, à moins que tu lui aies précisé dans ton modèle de formulaire.
Hors ligne
Ok, personne d'autre à d'idée ? Je reste bloqué sur ce point, j'ai surement quelque chose de mauvais qqpart.
Hors ligne
En désactivant la ligne :
$this->_helper->layout->setLayout('adminlayout');
tout fonctionne très bien, mais avec le layout que je remplace, cela ne fonctionne plus
avez vous une idée ?
Y a t'il une méthode pour appeler un autre layout de manière propre ?
Dernière modification par gu1gui (05-06-2009 21:24:27)
Hors ligne
moi je pensais à :
$this->_helper->layout()->setLayout('adminlayout');
Mais apparement ça marche sans les parenthèses...
Hors ligne
J'ai testé avec ou sans, le résultat est le même
Hors ligne
Pages: 1