Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 17-10-2007 16:02:44

fblutch
Membre
Date d'inscription: 15-09-2007
Messages: 30

Comment simuler bien passé la donné ?

voila j'ai un soucis, dans un formulaire.

Je recup les données de cette façon dans le formulaire:
<?php echo $this->escape(trim($this->membre->login));?>


et dans le controleur pour le view je fais sa :
           $this->view->membre = $membre->fetchRow('id_membre='.$id);


donc ça marche bien, maintenant le probleme c'est que pour le ajouter je verifie les données du formulaire dans le controller mais le probleme c'est que si une donnée n'est pas bonne sa ne réécris pas se que l'utilisateur a tapé (plutot genant)
donc j'ai essayé sa :
           $this->view->membre = $data;

sachan que data est un tableau
            $data = array(
                 'login' => $login,
                 'password'  => $password,
                 'email'  => $email,
                 'dateins'  => date("Y-m-d"),
                 'age'  => $age,
                 'ville'  => $ville,
                 'job'  => $job,                
                 'sexe'  => $sexe,
                 'desc'  => $desc,
                 'photo'  => $photo,
                );

voila, et sa marche pas comment faire ? smile

Merci

Hors ligne

 

#2 17-10-2007 17:04:22

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Comment simuler bien passé la donné ?

La vue ne dois jamais accéder au données c'est au controller de le faire

quant au données c'est $this->_request qui les détient
A+JYT

Hors ligne

 

#3 18-10-2007 09:27:09

fblutch
Membre
Date d'inscription: 15-09-2007
Messages: 30

Re: Comment simuler bien passé la donné ?

sekaijin a écrit:

La vue ne dois jamais accéder au données c'est au controller de le faire

quant au données c'est $this->_request qui les détient
A+JYT

en fait voici mon controler ajouter:

Code:

    function ajouterAction()
    {
        $this->view->title = "Over-Book : S'inscrire";
        
        $membre = new Membre();
            if ($this->_request->isPost()) {
            Zend_Loader::loadClass('Zend_Filter_StripTags');
            $filter = new Zend_Filter_StripTags();             
            
            $login = trim($filter->filter($this->_request->getPost('login')));
            $password = trim($filter->filter($this->_request->getPost('password')));
            $password2 = trim($filter->filter($this->_request->getPost('password2')));
            $email = trim($filter->filter($this->_request->getPost('email')));
            $age = trim($filter->filter($this->_request->getPost('age')));
            $ville = trim($filter->filter($this->_request->getPost('ville')));
            $job = trim($filter->filter($this->_request->getPost('job')));
            $sexe = trim($filter->filter($this->_request->getPost('sexe')));
            $desc = trim($filter->filter($this->_request->getPost('desc')));
            $photo="";
            
            require_once 'Zend/Validate/EmailAddress.php';
            $validemail = new Zend_Validate_EmailAddress();
            require_once 'Zend/Validate/Date.php';
            $validedate = new Zend_Validate_Date();
            require_once 'Zend/Validate/Alnum.php';
            $valideAnum = new Zend_Validate_Alnum();
            require_once 'Zend/Validate/NotEmpty.php';
            $valideNotEmpty = new Zend_Validate_NotEmpty();
            require_once 'Zend/Validate/Int.php';
            $valideInt = new Zend_Validate_Int();
            
            $error=0;
            if (!$valideAnum->isValid($login)) {
                    $this->view->buglogin="Doit contenir seulement des caractères alphabétiques et numériques.";
                    $error+=1;
            }
            if (!$valideAnum->isValid($password)) {
                    $this->view->bugpwd="Doit contenir seulement des caractères alphabétiques et numériques.";
                    $error+=1;
            }
            if ($password!=$password2 || !$valideAnum->isValid($password2)) {
                    $this->view->bugpwd2="Vous avez fait une erreur dans votre Mot de Passe.";
                    $error+=1;
            }
            if (!$validemail->isValid($email)) {
                    $this->view->bugemail="Votre E-Mail est invalide.";
                    $error+=1;
            }
            if (!$validedate->isValid($age)) {
                    $this->view->bugage="Votre Date de naissance n'est pas correcte.";
                    $error+=1;
            }
            if (!$valideNotEmpty->isValid($ville)) {
                    $this->view->bugville="Vous devez selectionner une ville.";
                    $error+=1;
            }
            if (!$valideAnum->isValid($job)) {
                    $this->view->bugjob="Doit contenir seulement des caractères alphabétiques et numériques.";
                    $error+=1;
            }            
            if (!$valideNotEmpty->isValid($sexe)) {
                    $this->view->bugsexe="Vous devez selectionner votre sexe.";
                    $error+=1;
            }
            if (!$valideNotEmpty->isValid($desc)) {
                    $this->view->bugdesc="Vous devez ecrire une petite description sur vous.";
                    $error+=1;
            }
            

            $errorphoto=0;
            if($_FILES["photo"]["error"] > 0 ) {
                $this->view->bugphoto="Vous devez specifier une photo de vous.";
                $error+=1;
            } 
            else {
                include "./application/fonction.php";
                if(!image_valid($_FILES['photo']['type']))
                {
                            $this->view->bugphoto="Le format de votre image doit etre de type : jpg,jpeg,gif,png.\n";
                            $errorphoto+=1;
                            
                }
                if(($_FILES['photo']['size'] / 1024) > 300)
                {
                        $this->view->bugphoto="La taille  de votre image doit etre inferieur à 300 Kb.";
                        $errorphoto+=1;
                            
                }
                if($errorphoto<1){
                    $picture_temp = $_FILES['photo']['tmp_name'];
                     $photo = $login."-".$_FILES['photo']['name'];
                    move_uploaded_file($picture_temp,$_SERVER['DOCUMENT_ROOT'].$this->_request->getBaseUrl()."/public/upload/membre/".$photo);
                }
            }
            
            $data = array(
                 'login' => $login,
                 'password'  => $password,
                 'email'  => $email,
                 'dateins'  => date("Y-m-d"),
                 'age'  => $age,
                 'ville'  => $ville,
                 'job'  => $job,                 
                 'sexe'  => $sexe,
                 'desc'  => $desc,
                 'photo'  => $photo,
                 'statut'  => 'membre',
                );
             if ($error<1) {
                 $membre->insert($data);
                $this->_redirect('/membre');
                return;
            }
        } 

        $this->view->membre = $membre->createRow();;

        // additional view fields required by form
        $this->view->action = 'ajouter';
        $this->view->buttonText = 'Ajouter';
    }

et pourquoi quand l'utilisateur fait une erreur, sa ne recharge pas les champs dans le formulaire ?

Merci

Hors ligne

 

#4 20-10-2007 17:59:58

fblutch
Membre
Date d'inscription: 15-09-2007
Messages: 30

Re: Comment simuler bien passé la donné ?

une p'tit aide svp, j'ai fai tou mes formulaires comme sa, j'aimerais bien que ça marche et j'trouve pa la solution neutral

Hors ligne

 

#5 21-10-2007 17:13:27

fblutch
Membre
Date d'inscription: 15-09-2007
Messages: 30

Re: Comment simuler bien passé la donné ?

je pensais pouvoir resoudre mon probleme avec sa :

$this->view->evenement = $event->createRow($data);;

mais sa marche pas :s et dans $data c'est bien un tableau avec les champs de la table . . .

que faire ? svp ?

Hors ligne

 

#6 22-10-2007 08:39:36

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Comment simuler bien passé la donné ?

Isole mieux ton problème et essaye sur un exemple simple. La le code est trop long pour qu'on ait le temps de se plonger dedans.
A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#7 22-10-2007 10:35:38

fblutch
Membre
Date d'inscription: 15-09-2007
Messages: 30

Re: Comment simuler bien passé la donné ?

Oki Pilipe smile

voici mon probleme en plus petit:

le controlleur:

Code:

   function ajouterAction()
    {
        $membre = new Membre();
            if ($this->_request->isPost()) {
            Zend_Loader::loadClass('Zend_Filter_StripTags');
            $filter = new Zend_Filter_StripTags();                        
            $login = trim($filter->filter($this->_request->getPost('login')));
            $email = trim($filter->filter($this->_request->getPost('email')));            
            $data = array(
                 'login' => $login,
                 'email'  => $email,
                );
             if ($error<1) {            //insertion si donné valide (verification das le code complet
                 $membre->insert($data);
                $this->_redirect('/membre');
                return;
            }
            // et là j'aimerais renvoyé les données a la page si $error >2 cad si les champs sont invalide.
            // mais je sais pas comment faire et avec 
              $this->view->membre= $membre->createRow($data);;
            //sa marche pas, pourtant ça ma l'air d'etre se que je veux faire. . . 
        } 
        $this->view->membre = $membre->createRow();;
    }

et je veux les recup dans mon formualaire qui sert egalement de modele au modifier et supprimer et qui accede au donnée avec :

Code:

<?php echo $this->escape(trim($this->membre->login));?>

Hors ligne

 

#8 22-10-2007 15:00:42

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Comment simuler bien passé la donné ?

Bonjour,

Il y a un problème d'approche : tu crées ton objet $membre avant de savoir si il a une quelconque raison d'être (si les valeurs saisies sont fausses, tu n'as pas à créer l'objet $member).

Il faut commencer par récupérer les données en POST, vérifier si elles sont valides ou pas.

Ensuite 2 cas :
- si tout est valide, tu crées le membre : $membre = new Membre() et $membre->insert...
- si il y a une ou plusieurs données invalides, tu renvoies à la vue les données qui avaient été postées (tu peux renvoyer directement des valeurs récupérées dans le $_POST). Mais ici tu ne peux pas renvoyer les données de $member, il n'est pas encore créé (et il n'y a aucune logique à le créer).

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#9 22-10-2007 15:52:33

fblutch
Membre
Date d'inscription: 15-09-2007
Messages: 30

Re: Comment simuler bien passé la donné ?

ah bah faudra p'tet changé le tuto sur
http://g-rossolini.developpez.com/tutor … odele#LV-I

^^

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