Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 01-07-2008 22:01:36

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Utilisation de $this->_request->getParam('monparam') dans un helper

Bonjour à tous,

Je commence de développement d'un nouveau site avec le ZF et je m'aperçois assez rapidement qu'il est tout le temps utile de connaitre la valeurs des paramètres language, sport, module, controller, action dans l'ensemble de mes controllers.
Tous ces paramètres sont présents dans l'url:
http://monsite/fr/sport1/news/view/list (je fais un site sur le sport)

je voulais donc récupérer ces valeurs avec un helper qui serait appeler à chaque fois.
Voici ce que j'ai tenté :

Code:

<?php
class Hawa_Helper_Variable
  extends Zend_Controller_Action_Helper_Abstract {
    public function preDispatch() {
        $this->getActionController()->language = $this->_request->getParam('language');
    }
}

Le problème c'est qu'il est impossible de connaitre la valeur des _param à ce moment là:

Notice: Undefined property: Hawa_Helper_Variable::$_request in ............
Fatal error: Call to a member function getParam() on a non-object in .............

Je doit me tromper dans l'utilisation du helper.

Voyez vous comment je peux faire ?

Merci d'avance.

Hors ligne

 

#2 01-07-2008 23:17:17

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

Bon ba excusez moi.

Je viens de trouver en voyant un autre exemple de recherche de paramètre.

Je fais maintenant ce cette façon :
$this->getActionController()->language = $this->getRequest->getParam('language');

Ca marche je ne vois pas trop pourquoi. Je ne vois pas la différence entre un getRequest et un _request...

Boh..

Hors ligne

 

#3 02-07-2008 01:15:33

-=blu3+3y3s=-
Membre
Lieu: Toulouse
Date d'inscription: 01-04-2008
Messages: 47

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

Salut,
Le notice qui t'est fourni aurait du te mettre la puce à l'oreille.
La variable $_request n'existe pas dans la classe Zend_Controller_Action_Helper_Abstract, c'est pour cela que ça te faisait une erreur alors que la méthode getRequest(), elle, existe bien.

A+

Hors ligne

 

#4 02-07-2008 09:49:59

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

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

en gros Zend estime que dans une action on a de très forte chance d'avoir besoin des élément de la demande (GET POST et params) Il défini donc par défaut un membre de la classe action qui s'appelle _request à cette fin
dans un helper il est plutôt rare d'en avoir besoin mais cela peut arriver
alors plutôt que d(ajouter un membre à la classe et de l'alourdir ZF mets à ta disposition une méthode pour récupérer le request lorsque tu en as besoin.

A+JYT

Hors ligne

 

#5 02-07-2008 11:27:37

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

Merci. Heureusement que la communauté ZF est assez active parce que je trouve qu'il est difficile de pouvoir apprendre le fonctionnement de ZF facilement.
Même si la doc est relativement complète, elle aborde chaque composant par ordre alphabétique et non par logique.
J'attends avec impatience la rédaction d'un livre qui aborde le ZF d'une manière plus intuitive que le manuel officiel.

Juste pour info: quelle est votre manière d'apprendre ? en suivant des tutos ? sur le forum ? autrement ?

Hors ligne

 

#6 02-07-2008 11:33:02

stf
Membre
Date d'inscription: 03-04-2008
Messages: 156

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

Au dela du ZF, je pense que c'est l'apprentissage d'un Framework qui est  ardu, car les docs ne sont jamais assez développées(tout comme la doc PHP, elle ne t'apprend pas à faire un systeme de session par ex).

Apres faut lire et relire des pdfs, et surtout pratiquer, enfin c'est comme ca que je m'y prend moi, aprse avoir lu le génialissime pdf de présentation du ZF par Julien, je me suis mi à tester quelques requetes, puis un systeme d'Auth, et petit à petit le moteur de mon Appli s'est montée smile

Hors ligne

 

#7 02-07-2008 23:58:49

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

J'ai de nouveaux besoin de votre aide.
J'ai donc maintenant mon helper qui déclare l'ensemble des variables qui sont tout le temps utile (language, sport, module, controller, action dans mon cas).
Je peux donc maintenant appeler ces variables dans n'importe quel controller.
Le problème que je rencontre maintenant, c'est d'utiliser ces variables dans mes menus que j'inclus dans mon layout par la fonction action() et je n'y arrive pas. Si j'appelle ma variable de la même façon que dans mon controller, je n'ai rien du tout en retour: pas de valeur, pas de message d'erreur.
Je n'arrive pas à savoir d'où cela peut venir.

Et la question complémentaire.
Je souhaiterais rassembler mes variables de cette façon:
$this->mesvariables->language
$this->mesvariables->sport
$this->mesvariables->module
$this->mesvariables->controller
$this->mesvariables->action

Le seul moyen que j'ai trouvé est d'utiliser le zend_registry

Code:

$registry = new Zend_Registry();
$registry->language = $this->getRequest()->getParam('language');
$registry->sport = $this->getRequest()->getParam('sport');
//etc
$this->getActionController()->mesvariables = $registry;

Est-ce la meilleure solution?

Hors ligne

 

#8 03-07-2008 10:33:22

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

Sais tu que pour appeller un variable dans un controller tu peux faire directement

Code:

$this->_getParam('language'[, $valeurParDefault]);

Ca ne te suffit pas?

Hors ligne

 

#9 03-07-2008 12:53:56

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

Si, cela peut être suffisant mais pas vraiment pratique. De plus j'ai également besoin de connaître la valeur de ces paramètres dans mes menus qui sont insérer dans mon layout par la fonction action(). (et la je ne crois pas que $this->_getParam('language'[, $valeurParDefault]); marche)

Donc avoir une variable accessible depuis l'ensemble de ma page (content, action() etc) se rapprocherait plus de l'idéal que du suffisant.

Hors ligne

 

#10 07-07-2008 10:54:54

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

Petit up ^^

Hors ligne

 

#11 07-07-2008 11:00:05

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

(et la je ne crois pas que $this->_getParam('language'[, $valeurParDefault]); marche)

Tu as essayé au moins?

Hors ligne

 

#12 07-07-2008 13:48:17

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

Oui. Je n'ai pas de message d'erreur ni de valeur affichée.

Hors ligne

 

#13 09-07-2008 18:02:46

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

petit up smile

Hors ligne

 

#14 10-07-2008 09:27:03

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

Je ne comprends absolument pas ton problème.

J'en ai parlé dans un autre poste.
Pour passé des variables du layout à ton action via $this->action :
$this->action('action', 'module', 'controller', array('var1' => 'val1'));

et pour les récupérer dans ton action, devine !

Réponse : getParam smile

Pour faire mesvariables->toto = tata il faut faire :
$mesvariables = new Object;
$mesvariables->toto = tata;


----
Gruiiik !

Hors ligne

 

#15 11-07-2008 23:01:17

slaughter
Membre
Date d'inscription: 01-04-2008
Messages: 217

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

Voici mon fichier layout.phtml

Code:

<html>
    <head>
        <?php echo $this->headTitle();?> 
        <?php echo $this->headLink(); ?> 
    </head>
    <body>
        <div id="bodyall">
<?php echo $this->action('header','general','mep'); ?> 
<?php echo $this->action('advertareaheader','advert','mep'); ?> 
            <div id="box_container">
<?php echo $this->layout()->contenu; ?>    
<?php echo $this->action('rightmenu','mep','news'); ?> 
                <div class="cleaner"></div>
            </div>
<?php echo $this->action('footer','general','mep'); ?>         
        </div>
    </body>
</html>

Mon "problèmes c'est que dans chaque parties du layout inclut par la fonction action(), je vais avoir besoin de connaître les paramêtres /:language/:sport/:module/:controller/:action de la page en cours.

Si j'utilise la méthode $this->getParam('language') dans mon controller inclut par action(), je n'ai aucun résultat. Pas de message d'erreur mais pas de résultat.

Je vais peut être reformuler ma demande:

Comment feriez vous pour avoir accès facilement à la valeur des variables, language, sport, module, controller, action n'importe où dans mon application (controller en cours et controller inclut par action() ) ?

Hors ligne

 

#16 12-07-2008 03:05:17

Azema
Membre
Lieu: Paris
Date d'inscription: 26-09-2007
Messages: 51
Site web

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

Et pourquoi ne pas définir tes variables dans un controller parent ?
Il te suffit dans une methode preDispatch() du parent de récupérer tes valeurs et de les stocker dans des variables du controller.

Ensuite, tu implémentes tous tes controllers de ton application de ce controller parent et tu fais appelle à tes variables.

Cela peut être une solution, du moins je pense.

Cordialement, Azema.

Hors ligne

 

#17 15-07-2008 09:22:24

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Utilisation de $this->_request->getParam('monparam') dans un helper

Autre solution  dans ton action :

Zend_Front_Controller::getRequest()->getParam('param');

Ainsi, tu récupères la requètes initial et pas celle demandé par tes $this->action.

Je m'en sers pour mes menu
J'appelle le module 'toto' depuis mon navigateur, mais mon layout appelle $this->action('sidebar','nav', 'general');
Et je fait donc Zend_Front_Controller::getInstance()->getRequest()->getModuleName() pour savoir dans quel module je suis vraiment (et place la class='active' au lien qui correspond)
car
$this->_request->getModule() me renvoi general et
Zend_Front_Controller::getInstance()->getRequest()->getModuleName() me renvoi toto

Dernière modification par nORKy (15-07-2008 09:22:52)


----
Gruiiik !

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