Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 13-04-2007 19:19:22

toutoune60
Membre
Date d'inscription: 13-04-2007
Messages: 21

[Zend_View][9.0.2] Propager les erreur après un redirect

Je suis tout nouveau sur le framework Zend, bonjour à tous!

J'aurais voulu savoir s'il y avait un moyen simple (autre que par l'URL) de propager une erreur sur une vue après un redirect?
Pour l'instant je n'ai trouvé que la solution du

Code:

redirect->(url."?erreur=xxx);

Mais je ne trouve pas cela très élégant!

Hors ligne

 

#2 13-04-2007 20:40:51

orpheus
Membre
Date d'inscription: 10-04-2007
Messages: 13

Re: [Zend_View][9.0.2] Propager les erreur après un redirect

tu peux passer tes erreurs dans la vue mais il faut avoir créé ta vue dans ton index.php (enfin je crois):

dans ton controleur:
$errors=array('erreur1','erreur2');
$this->view->assign('errors',$errors);

dans ta vue:
foreach ($this->errors as $error){
                if ($error != '') echo $error[0];
            }

j'espere que ca a pu t'aider!!

Hors ligne

 

#3 16-04-2007 08:51:08

Isilgawen
Membre
Lieu: Limoges
Date d'inscription: 23-03-2007
Messages: 106

Re: [Zend_View][9.0.2] Propager les erreur après un redirect

Le plus simple a mon avis c'est de fonctionner avec une petite variable de session qui est réinitialisée en fin de chaque page. Comme le flash notice de rails. C'est simple et efficace.

Hors ligne

 

#4 16-04-2007 10:18:41

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: [Zend_View][9.0.2] Propager les erreur après un redirect

Isilgawen a écrit:

Le plus simple a mon avis c'est de fonctionner avec une petite variable de session qui est réinitialisée en fin de chaque page. Comme le flash notice de rails. C'est simple et efficace.

Totalement d'accord.
Par contre je me suis penché sur le composant Zend_Session hier soir, et j'ai un doute sur mes compétences d'un coup big_smile

Son utilisation me semble un peu obscur. Pour créer et récupérer un Namespace.

Code:

// in the Zend_Auth component
require_once 'Zend/Session.php';
$authNamespace = new Zend_Session_Namespace('Zend_Auth');
$authNamespace->user = "myusername";

Ce namespace, je le créé où et je le récupère comment dans un autre controller par exemple ...?


Société : Direct Info Service

Hors ligne

 

#5 16-04-2007 10:32:04

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: [Zend_View][9.0.2] Propager les erreur après un redirect

Bon je me répond déjà un peu à moi même.

Voilà comment je fait pour l'instant.

Code:

MyController.php

public function init()
{
        /* mon code etc.......... */
        if(Zend_Session::namespaceIsset('flash_message')){
            $this->view->result = Zend_Session::namespaceGet('flash_message');
            Zend_Session::namespaceUnset('flash_message');
        }
}

public function saveAction()
{
        $flash_message = new Zend_Session_Namespace('flash_message');
        /* mon code etc.......... */
            if($my_annonce['id'] > 0){
                $annonce->update($my_annonce, 'id = '.$my_annonce['id']);
                foreach ($my_annonce_data as $item){
                    $annonce_data->update($item, 'id = '.$item['id']);
                }

                /*  !!!!! UTILISATION SESSION !!!!! */
                $flash_message->state = 'true';
                $flash_message->message = "L'annonce est mise à jour";

            }
}

Et ça tourne pas mal. Y'as peut être une meilleur / autre  méthode ?


Société : Direct Info Service

Hors ligne

 

#6 16-04-2007 10:54:38

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

Re: [Zend_View][9.0.2] Propager les erreur après un redirect

Perso, j'initialise mes sessions (les namespaces) dans le fichier d'initialisation global.
De toute façon c'est partagé dans toute l'appli, ça me parrait important que ça soit connu dès le départ. Après je mets mes namespaces dans la registry pour y avoir accès partout dans mon appli.

dans la pratique, j'utilise un seul namespace pour un site, sauf si j'utilise une librairie qui elle même utilise Zend_Session. Elle peut alors utilise son propre namespace.

A+,
Philippe


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

Hors ligne

 

#7 16-04-2007 11:30:29

Isilgawen
Membre
Lieu: Limoges
Date d'inscription: 23-03-2007
Messages: 106

Re: [Zend_View][9.0.2] Propager les erreur après un redirect

Je fonctionne comme philippe un seul namespace avec son instance dans la registry.
Dans le bootstrap ca donne ca :

Code:

// Init session
Zend_registry::set("session",new Zend_Session_Namespace('monSite'));

Hors ligne

 

#8 16-04-2007 13:45:11

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: [Zend_View][9.0.2] Propager les erreur après un redirect

Oki merci pour les infos. Je suis pas core trop convaincu mais voilà comment j'ai modifié...je verrais à l'usage...

Code:

    public function init()
    {
        $this->session = Zend_Registry::get('session');

        if(!is_null($this->session->flash_message)){
            $this->view->result = $this->session->flash_message;
        }
        $this->session->flash_message = null;
    }

    public function deleteAction()
   {
        /* du code.... etc.. */
        else{

            $flash_message['state'] = 'false';
            $flash_message['message'] = "Cochez les annonces avant de cliquer sur Supprimer.";
        }

        $this->session->flash_message = $flash_message;

        $this->_redirect('/annonce/index');
    }

Société : Direct Info Service

Hors ligne

 

#9 16-04-2007 18:14:25

fred wolf
Administrateur
Lieu: Bordeaux
Date d'inscription: 09-04-2007
Messages: 96

Re: [Zend_View][9.0.2] Propager les erreur après un redirect

Bonjour, bonjour,

peut-être devrais-tu jeter un coup d'oeil à une fonctionnalité rajoutée dans la partie controller :

Les actions helpers qui sont une sorte de plugins pour les actions et non au niveau du controller. Dans la doc tu trouveras un exemple avec un flash messenger à la mode ror, genre :

Code:

$this->_helper->flashMessenger->addMessage('ce_que_tu_veux');

voici le lien, c'est dans la partie incubator proposal et devrait se trouver dans le core du svn je crois :

http://framework.zend.com/wiki/display/ … ion_Helper


Je l'utilise et c'est bien, mais je ne sais pas si ça va dans le sens de ta question...

La bonne soirée,

fred

Dernière modification par fred wolf (16-04-2007 18:14:42)

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