Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-04-2008 09:08:57

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

[résolu]Comment récupérer le controlleur, module, ressource en cours ?

Bonjour,

Tout est dit dans le titre de ce post. J'aurai besoin de récupérer ces informations dans une action. Est-ce possible ?

Merci et à bientot.

Dernière modification par whitespirit (07-04-2008 11:35:04)

Hors ligne

 

#2 07-04-2008 09:37:35

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: [résolu]Comment récupérer le controlleur, module, ressource en cours ?

Oui c'est le dispatcher qui te donnera ces informations.
Tu le récupères donc dans une action avec $this->getFrontController()->getDispatcher()

Hors ligne

 

#3 07-04-2008 10:17:19

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [résolu]Comment récupérer le controlleur, module, ressource en cours ?

Je n'arrive pas à utiliser. Lorsque j'ai cette ligne, je sors en exception :

Code:

$this->getFrontController()->getDispatcher()

Je voudrais tester si le controlleur = un_autre controlleur.

Hors ligne

 

#4 07-04-2008 10:34:23

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

Re: [résolu]Comment récupérer le controlleur, module, ressource en cours ?

Bonjour whitespirit,

Le plus simple c'est :

Code:

$this->getRequest()->getControllerName();

A+, Philippe


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

Hors ligne

 

#5 07-04-2008 11:44:26

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [résolu]Comment récupérer le controlleur, module, ressource en cours ?

Et c'est possible de récupérer le nom du controlleur dans un helper ?

Hors ligne

 

#6 07-04-2008 11:45:23

lethak
Membre
Lieu: France
Date d'inscription: 05-04-2008
Messages: 168

Re: [résolu]Comment récupérer le controlleur, module, ressource en cours ?

une vue en MVC Context qui me permet de tester ou je me trouve:

Code:

<?php
    $request = Zend_Controller_Front::getInstance()->getRequest();
    $disp = $this->disp;
    $disp .= "<br/><h1>Curently viewing:</h1>";
    $disp .= "<h2>Module:</h2> ".$request->getModuleName()."<br/>";
    $disp .= "<h2>Controller:</h2> ".$request->getControllerName()."<br/>";
    $disp .= "<h2>Action:</h2> ".$request->getActionName()."<br/>";
    echo $disp;
?>

IT Dev @Twitter

Hors ligne

 

#7 07-04-2008 11:59:48

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

Re: [résolu]Comment récupérer le controlleur, module, ressource en cours ?

rebonjour whitespirit

Dans un helper tu as tjrs accès au controller courant avec $this->getActionController()
donc après (dans ton preDispatch par exemple) tu fais :

Code:

$ctrlName = $this->getActionController()->getRequest()->getControllerName();

A+, Philippe


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

Hors ligne

 

#8 07-04-2008 12:30:45

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [résolu]Comment récupérer le controlleur, module, ressource en cours ?

je suis content smile Merci de la rapidité et l'efficacité de vos réponses.

Hors ligne

 

#9 17-04-2008 02:39:14

TDjey
Nouveau membre
Date d'inscription: 17-04-2008
Messages: 7

Re: [résolu]Comment récupérer le controlleur, module, ressource en cours ?

Bonjour,

Je voudrais savoir s'il est possible de récupérer le nom du controleur appeler directement dans le bootstrap
Ex
http://monsite/controleur1/action1

et dans mon bootstrap avoir une variable qui est intancié avec "controleur1"

Hors ligne

 

#10 17-04-2008 08:19:48

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: [résolu]Comment récupérer le controlleur, module, ressource en cours ?

mmm... Même si t'arrives à le faire, je ne pense pas que tu es sur la bonne voie. Le bootstrap sert d'initialisation des infos et lancer le processus MVC.

Si tu veux récupèrer ces infos en premier lieu, et j'imagine que c'est ce que tu veux faire et ensuite dispatcher toi même vers tes controlleurs, utilise les plugins de Zend. Je te rappelle qu'un plugin est exécuté avant toutes choses (regarde le tuto de phillipe sur les helpers qui est très instructif). Donc c'est dans ton plugin que tu récupère ces infos, après tu peux faire tes tests et rediriger vers ou tu veux.

Sinon chaque controller implémente la fonction preDispatch(), cette fonction se charge avant même qu'une action du controlleur soit lancé. Ici aussi tu peux faire tes redirections. En fait le plugin agit comme un preDispatch (entre autre).

Hors ligne

 

#11 26-06-2008 09:19:54

elkolonel
Administrateur
Lieu: Grasse
Date d'inscription: 18-12-2007
Messages: 299
Site web

Re: [résolu]Comment récupérer le controlleur, module, ressource en cours ?

Sinon on peut créer un helper pour le coup, pour pouvoir récupérer les infos dans la vue.
Exemple :
Fichier Helper GetContext.php (basé sur le code de Lethak)

Code:

class Zend_View_Helper_GetContext
{
    public function getContext($context='')
    {
        $request = Zend_Controller_Front::getInstance()->getRequest();
        switch ($context) {
            case 'module':
                return '<strong>MODULE::</strong>[' . $request->getModuleName() . ']';
                break;
            case 'controller':
                return '<strong>CONTROLLER::</strong>[' . $request->getControllerName() . ']';
                break;
            case 'action':
                return '<strong>ACTION::</strong>[' . $request->getActionName() . ']';
                break;
        
            default:
                return 'Miss Context parameter';
                break;
        }
    }
}

L'appel dans la vue:

Code:

...
<p><?= $this->getContext('module'); ?></p>
<p><?= $this->getContext('controller'); ?></p>
<p><?= $this->getContext('action'); ?></p>
<p><?= $this->getContext(); ?></p>
...

A adapter en fonction de vos besoins smile

Dernière modification par elkolonel (26-06-2008 09:22:40)

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