Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 26-07-2007 14:07:30

arnoweb
Nouveau membre
Date d'inscription: 26-07-2007
Messages: 4

action versus paramètre ?

Dans quelle mesure utilise t-on un paramètre plutôt qu'une action ?

J'ai constaté sur le site de zend :
Le module default correspond à la langue anglaise, on a donc :
un controller company : http://www.zend.com/company
une action management : http://www.zend.com/company/management

Le module fr correspond à la langue française :
un controller fr/  : http://www.zend.com/fr
un autre controller company : http://www.zend.com/fr/company
une action management : http://www.zend.com/fr/company/management
une action investors : http://www.zend.com/fr/company/investors

Cela signifie que dans le controller company on créer une action management, une action investors...etc et qu'à chaque fois est associée à cette action une view. on doit donc créer dans le controller de company, autant d'actions qu'il y a de pages affichées ?

Je voudrais créer un controller page (et un seul) qui appelle la page passée en action (ou en paramètre), mais je ne vois pas comment faire sans créer autant de methodes de la classe principale de mon controller que d'actions ?

En gros, je souhaite imiter le principe d'include au sein du ZF en MVC :
index.php?page=management
index.php?page=investors

Des pistes ?

Hors ligne

 

#2 30-07-2007 15:12:48

arnoweb
Nouveau membre
Date d'inscription: 26-07-2007
Messages: 4

Re: action versus paramètre ?

Apparemment, pas de pistes ?

Hors ligne

 

#3 30-07-2007 15:35:22

haltabush
Membre
Lieu: Saumur
Date d'inscription: 20-04-2007
Messages: 64

Re: action versus paramètre ?

Je ne comprends pas très bien...
Voilà comme je fais, moi (indépendemment de la langue, que je gère autrement). Pour les routes, j'utilise un modèle module/controller/action/params. Pour mes vues, je fais un truc très moche (ça date d'avant le ZF 1.0 RC1) : je mets ça dans le bootstrap :

Code:

$controller->setParam('noViewRenderer', true);

puis j'affiche mes vues comme ça :

Code:

echo $this->view->render('header.phtml');echo $this->view->render('contenu.phtml');echo $this->view->render('footer.phtml');

Hors ligne

 

#4 30-07-2007 15:50:53

arnoweb
Nouveau membre
Date d'inscription: 26-07-2007
Messages: 4

Re: action versus paramètre ?

Ton fichier contenu.phtml fait donc l'action d'inclure un nom de fichier passé en paramètre ?

La question que je me pose dans un premier temps :
dans quelle mesure puis-je créer une action qui est d'inclure n'importe quelle vue ?
A un controller donné, IndexController.php par exemple, cela ne me sembler pas correct de créer un méthode par fichier que je souhaite afficher, ai-je tord ?

Ex :
IndexController.php :

Code:

class IndexController extends Zend_Controller_Action 
{
    public function init()
    {
        $this->view->title = "Voir page par défaut";
        $this->render();

    }
    public function indexAction()
    {
        $this->view->title = "Voir page par défaut";
        $this->render();
    }
    public function staticpage1Action()
    {
        $this->view->title = "Voir page static 1";
        $this->render();
    }
    public function staticpage2Action()
    {
        $this->view->title = "Voir page static 2";
        $this->render();
    }

Ce code ne me semble pas suivre la bonne logique MVC ?

Dernière modification par arnoweb (30-07-2007 15:51:43)

Hors ligne

 

#5 31-07-2007 09:56:30

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

Re: action versus paramètre ?

Bonjour,

Tu peux récupérer un paramètre envoyé dans l'URL.
si tu veux afficher la page "toto" qui est à l'URL : http://monsite/index/display/page/toto :
controlleur = "index"
action = "display"
et tu as un paramètre en plus : page = "toto"

ensuite dans ton IndexController.php, tu as un truc du genre (disons que tu utilises le viewrenderer):

Code:

class IndexController extends Zend_Controller_Action 
{
    public function displayAction()
    {
        $page = $this->_getParam("page");
        $this->_helper->viewRenderer->setRender($page);
        // ça va afficher le fichier qui est dans .../views/scripts/index/$page.phtml
    }
}

Fais gaffe au trou de sécurité que ça provoque... il faut bien vérifier que $page ne te fait pas inclure un fichier php qui est n'importe où sur ton disque... (un gars peut ajouter des ../../../../etc/passwd dans l'URL à la place de "toto"...).

A +,
Philippe


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

Hors ligne

 

#6 31-07-2007 11:18:05

arnoweb
Nouveau membre
Date d'inscription: 26-07-2007
Messages: 4

Re: action versus paramètre ?

Un grand merci, c'est ce que je cherche à faire. Je vais tester tout ça, niveau sécurité, auparavant je vérifiais l'existence du fichier dans la structure de mes répertoires. Pour tester l'existence d'un fichier, est-ce dans le controller que ça se passe ou dois-je passer par un helper ?

Je viens de tomber sur ce tutoriel qui explique la logique de Viewrenderer, ça peut éclairer sur son utilisation :
http://julien-pauli.developpez.com/tuto … wrenderer/

Hors ligne

 

#7 31-07-2007 11:28:57

Ysaak
Membre
Lieu: Strasbourg
Date d'inscription: 18-06-2007
Messages: 33

Re: action versus paramètre ?

Bonjour,

Cela se passe dans ton controller.
Par contre, il ne suffit pas de vérifier si le fichier existe réellement, mais qu'il se trouve à l'endroit escompté.

Je me pose une question : en passant les informations via l'url. Est ce qu'en utilisant une adresse du type :
controller/action/param/
On peut utiliser le caractère "/" pour param dans l'url et que le schéma soit correctement reconnu par le routeur ?

+, Damien

Dernière modification par Ysaak (31-07-2007 11:29:51)

Hors ligne

 

#8 31-07-2007 11:39:27

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

Re: action versus paramètre ?

Bonjour Ysaak,

de toute façon il faut encoder le paramètre avant de l'envoyer dans l'URL. les "/" sont normalement déjà transformés. Ca ne perturbe donc pas le router.
(c'est urlencode() pour encoder le paramètre normalement)

Philippe


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

Hors ligne

 

#9 31-07-2007 12:02:55

Ysaak
Membre
Lieu: Strasbourg
Date d'inscription: 18-06-2007
Messages: 33

Re: action versus paramètre ?

Bonjour Philippe,

J'avais zappé l'encodage pour les URL.

Merci pour le rappel.

+, Damien

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