Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 31-07-2012 08:48:46

aziza_1989
Membre
Date d'inscription: 31-05-2012
Messages: 58

comment afficher un message de sur la même page

Bonjour,
Je suis entrain de developpez mon controller d'inscription,et je veux quand le traitement d'inscription (InscriptionController /verifyAction())est valide,m'afficher un avertissement   (retournez à votre boite,un mail automatique sera envoyé pour activer votre compte)roulaant horizontalement sur la même page surlaquelle j'ai fait l'inscription(index/index),car le formulaire d'inscription existe dans toutes les pages du sites.
S'il vous plait pouvez vous me dire comment?
Merci.

Hors ligne

 

#2 31-07-2012 09:06:31

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: comment afficher un message de sur la même page

Salut, je pense que le plus simple est de réaliser une aide de vue qui va te permettre d'afficher via ton layout le formulaire d'inscription sur toutes les pages. De cette façon tu gères tout uniquement au niveau de la vue de ton aide de vue.

Grosso modo dans ton aide de vue tu retournes un nouveau ViewModel et dans celui-ci tu affiches ton message dans le cas où l'inscription est valide.

Hors ligne

 

#3 31-07-2012 10:50:35

aziza_1989
Membre
Date d'inscription: 31-05-2012
Messages: 58

Re: comment afficher un message de sur la même page

Orkin a écrit:

Salut, je pense que le plus simple est de réaliser une aide de vue qui va te permettre d'afficher via ton layout le formulaire d'inscription sur toutes les pages. De cette façon tu gères tout uniquement au niveau de la vue de ton aide de vue.

Grosso modo dans ton aide de vue tu retournes un nouveau ViewModel et dans celui-ci tu affiches ton message dans le cas où l'inscription est valide.

Salut,Merci bien pour la réponse,je veux l'adapter mais je ne sais pas comment pouvez vous m'aider?
Voilà ce que j'ai fait jusqu' à présent:supposons que nous somme sur la page index/index et dans mon action form :

Code:

<form action="<?php echo $this->url(array('controller'=>'account','action'=>'verify','paramcl'=>'Index','paramAct'=>'Index'))?>" method="post">

----------------------------------------InscriptionController-------------------------------------

Code:

public function verifyAction()
    {
        ini_set('SMTP','smtp.menara.ma');
        //preparation des variables 
       //si l'utilisateur a une session
        if($session->getUserInfo()==false){
                //recuperation des params de l'url et registry
            $secure = $registry->get('security');
            $email = $this->_getParam('email');
            $pwd = $this->_getParam('pwd');
            $pwdc = $this->_getParam('pwdc');
            $nom=$this->_getParam('nom');
            $prenom=$this->_getParam('prenom');
            $controller=$this->_getParam('paramcl');//je recupere l'action et le controller 
            $action=$this->_getParam('paramact');//où se trouve le formulaire 
                                                                         //pour se rediriger vers la même page
            
            // si email valide
            $found = preg_match('#^[a-z0-9_.-]{1,}@[a-z0-9_.-]{2,}\.[a-z]{2,4}$#', $email);
            if($found){
                // si email existe deja dans la bd
                $row = $db->fetchAll("SELECT * FROM client WHERE EMAIL='$email'");
                
                if(count($row)){
                    
                    $this->_redirect($controller.'/'.$action.'/error/1');
                    
                }else{
                    // verify if passwords are the same
                    if(strcmp($pwd, $pwdc)==0 && strlen($pwd)>=8){
                        
                        // add client and send confirmation email
                            // password crypt
                        $pwd = md5(utf8_encode($pwd));
                        
                            // crypt id for client cofirmation
                        $emails = md5($email);
                        
                        $date = date('Y-m-d H:i:s');
                        $date = md5($date);
                        $idConfirmation = md5(utf8_encode($emails.' '.$date));
                            // send email to the user 
                        /*mail($email,$translate->_('confirm_subject'),$translate->_('confirm_msg') .'<br />'
                        .'http://www.psddoctor.com/account/confirm/id/'.$idConfirmation );*/
                        $mail = new Zend_Mail();
                        
                        $mail->setFrom('exemple@exemple.com','expediteur');
                        
                        $mail->addTo($email);
                        
                        $mail->setBodyHtml('Bonjour '.' '.$prenom.','.'<br>'.$translate->_('confirm_msg').' <br />'.'http://www.exemple.com/account/confirm/id/'.$idConfirmation);
                        
                        $mail->setSubject($translate->_('confirm_subject'));
                        
                        $mail->send();
                        
                        
                            // insert
                        $data = array(
                            'email'=>$email,
                            'login'=>$email,
                            'pwd'=>$pwd,
                            'idconfirmation'=>$idConfirmation,
                            'confirmed'=>false
                        );
                        
                        $client = new Client($db);
                        
                        
                        $client->insert($data);
                        
                        
                        $this->_redirect($controller.'/'.$action.'/success/1');
                        //$this->_redirect('account/confirm/id/'.$idConfirmation);
                                                
                    }else{
                        $this->_redirect($controller.'/'.$action.'/error/2');
                    }
                    
                }
                
            }else{
                $this->_redirect($controller.'/'.$action.'/error/1');
            }
            
        }else{
            $this->_redirect('/');
        }
        
    }

---------------------------------------------IndexController-----------------------------------------------------------------

Code:

          public function indexAction()
    {
        // action body
      //session_start();
     
        $registry = new Zend_Registry();
        $session = $registry->get('session');
        $lang = $this->_getParam('lang');
        if($session->getUserInfo()==false){
            
            $success = $this->_getParam('success',0);
            $error = $this->_getParam('error',0);
            $translate = $registry->get('translator');
            SessionHandler::langCookie($lang, $translate);
            $this->view->translate = $translate;
            $this->view->lang = $lang;
            $this->view->success = $success;
            $this->view->error = $error;
        }else{
            $this->_redirect('session/login');
        }
        
        
    }

------------------------------------------index.phtml-----------------------------------------

Code:

       <div><?php if($this->success!=0):?>
                <?php if($this->view->success==1):?>   
                                                    
                <?php echo 'votre ascription est bien faite';?>
                                                
                <?php elseif($this->success==2):?>
                                                    
                <?php echo $this->translate->_('success_confirm_register')?>
                <?php endif;?>
        <?php else:?>
                                                
        <?php if($this->error!=0):?>
        <?php if($this->error==1){
                 echo $this->translate->_('email_error');
                                                                    
                  }else{
                          echo $this->translate->_('password_error');
                                                                    
                           }
                                                    
                 ?>
                 <?php  endif;?>    
                                              
                 <?php  endif;?>
                             
                </div>

Le problème ici est :lorsque l'inscription est valide il me redirige vers public/Index//success/1 mais il ne m'affiche pas ce qui est entre les if.
S'il vous plait pouvez vous m'aider?
Merci bien

Hors ligne

 

#4 31-07-2012 12:21:09

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: comment afficher un message de sur la même page

Tu es sur d'utiliser la version 2 du framework ?

Hors ligne

 

#5 31-07-2012 13:18:02

aziza_1989
Membre
Date d'inscription: 31-05-2012
Messages: 58

Re: comment afficher un message de sur la même page

shadypierre a écrit:

Tu es sur d'utiliser la version 2 du framework ?

Non j'utlise 1.11.6 livrée avec zendStudio 8-0-1

Hors ligne

 

#6 31-07-2012 14:05:33

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: comment afficher un message de sur la même page

Comme tu peux le voir tu es dans le section réservé aux versions 2.X du zendframework. Tu n'es donc pas dans la bonne section.

Je déplace la discussion.

Hors ligne

 

#7 31-07-2012 14:31:13

us2rn4m2
Membre
Date d'inscription: 07-05-2011
Messages: 104

Re: comment afficher un message de sur la même page

Hello,

C'est le helper 'flashMessenger' qu'il te faut:
http://framework.zend.com/manual/fr/zen … hmessenger

Sur la meme page tu pourras apres un envoi d'email (ou une inscription dans ton cas),  afficher un message pour l'utilisateur.

Dernière modification par us2rn4m2 (31-07-2012 14:48:00)

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages