Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'ai un petit problème dont ci-dessous la description:
J'ai créer une action qui permet d'enregistrer quelques informations dans une table mysql,et un formulaire HTML.
==============================================
public function registerAction()
{
if ($this->getRequest()->isPost()) {
$register = new Application_Model_Register();
if (isset($_POST['nom'])) {
$this->_helper->redirector('index?page_id=inscription');
$this->view->error='Problème lors d enregistrement';
}
else{
$register->createUser(array(
'nom' => $_POST['nom'],
'mail' => $_POST['mail'],
'telephone' => $_POST['tel'],
'password' => $_POST['password']
));
$this->_helper->redirector('index');
}
}else{
$this->_helper->redirector('index?page_id=inscription');
$this->view->error='Problème lors d enregistrement';
}
}
===============================================
Dans mon formulaire HTML j'affiche mon message d'erreur dans un DIV.
===============================================
<?php echo $this->error ; ?>
===============================================
Avec cette manip,je n'arrive pas a afficher mon message d'erreur;après l’exécution de l'action register les informations sont pérdu
Que doit-je faire ???
Hors ligne
Pour récupérer tes paramètres, fais plutôt comme ceci:
$this->getRequest()->getParam('nom','');
Hors ligne
Merci pour votre repense,pour info j'utilise la version 1.12.1 de zend
je vé mieux détaillé ma question:
Mon controlleur IndexController contient les action suivants: indexAction() et registerAction() .lLe problème c'est que quand j'affect une valeur à mon paramètre $this->view->error='erreur bla bla'; au sein de indexAction() il s'affiche correctement dans ma page HTML mais par contre quand je le met dans la fonction registerAction() il ne sera plus afficher,comme si il est vide.
j’espère avoir bien détailler mon problème,safé plus que 5 jours que je suis bloqué
Hors ligne
j'ai même rajouter ce bout de code $this->getRequest()->setParam('test','testttttttttttttttt');dans mon action registerAction() et j'ai toujours le meme problème.
les valeurs sont perdus d'un action à l'autre
Hors ligne
normal que le message d'erreur ne s'affiche pas car en faisant de la redirection dans l'action register tu quittes d'emblée l'action register impliquant la non exécution du code situé après redirector.
Pour arriver à afficher les erreurs :
avant de faire chaque redirection, tu ajoutes le message d'erreur dans l'action helper FlashMessenger puis tu affiches dans la vue destinée à afficher l'erreur:
[lang=php] public function registerAction() { $flasher = $this->getHelper('FlashMessenger'); if ($this->getRequest()->isPost()) { $register = new Application_Model_Register(); if (isset($_POST['nom'])) { $flasher->setNameSpace('error'); $flasher->addMessage("problème lors de l'enregistrement"); $this->_helper->redirector('index?page_id=inscription');//??? } else{ $register->createUser(array( 'nom' => $_POST['nom'], 'mail' => $_POST['mail'], 'telephone' => $_POST['tel'], 'password' => $_POST['password'] )); $this->_helper->redirector('index'); } }else{ $flasher->setNameSpace('error'); $flasher->addMessage("problème lors de l'enregistrement"); $this->_helper->redirector('index?page_id=inscription'); } }
dans la vue associée à l'action register(c-a-d la vue destinée à afficher le message d'erreur)
[lang=php] <?php if ($flashMessenger->setNamespace('error')->hasMessages()): ?> <div class="message error"> <?php foreach ($flashMessenger->getMessages() as $msg): ?> <?php echo $msg ?> <?php endforeach; ?> </div> <?php endif; ?>
Dernière modification par amiss (08-01-2013 23:47:23)
Hors ligne
une remarque: pour la lisibilité du code il faut revoir tes IF dans registerAction() y'en a en trop et peut être inutiles.
Hors ligne
Merci amiss pour ta repense,
j'ai réutiliser ton code,et apparemment j'ai un petit souci avec la deuxième partie (HTML ),j'ai l'erreur suivante.
Notice: Trying to get property of non-object in C:\wamp\www\masskane\application\controllers\IndexController.php on line 22 Notice: Trying to get property of non-object in C:\wamp\www\masskane\application\views\scripts\index\includes\connexion.phtml on line 34 Fatal error: Call to a member function getMessages() on a non-object in ...\application\views\scripts\index\includes\connexion.phtml on line 34
Hors ligne
lamkadmi a écrit:
Merci amiss pour ta repense,
j'ai réutiliser ton code,et apparemment j'ai un petit souci avec la deuxième partie (HTML ),j'ai l'erreur suivante.Code:
Notice: Trying to get property of non-object in C:\wamp\www\masskane\application\controllers\IndexController.php on line 22
c'est quoi la ligne 22 dans ton fichier IndexController.php ?
ensuite dans la vue j'avais omis quelque chose.j'ai réécris la vue:
[lang=php] <?php $flashMessenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger');?> <?php if ($flashMessenger->setNamespace('error')->hasMessages()): ?> <div class="message error"> <?php foreach ($flashMessenger->getMessages() as $msg): ?> <?php echo $msg ?> <?php endforeach; ?> </div> <?php endif; ?>
Hors ligne
je te renvoie à la doc pour bien comprendre l'aide d'action flashMessenger:
flashmessenger
Hors ligne
cool,merci amiss,en fin ça marche j'arrive à afficher mes messages d'erreurs/infos.
Dernière modification par lamkadmi (16-01-2013 17:22:15)
Hors ligne