Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 26-06-2007 17:55:33

Ouaibou
Membre
Date d'inscription: 26-06-2007
Messages: 16
Site web

[MVC][RC3]Helpers & Duplication de code

Bonjour,

Je débute avec le Zend Framework. Jusqu'à maintenant j'ai réussi à aboutir à ce que je souhaitais grace aux super didactitiels trouvés en autre par l'intermédiaire de ce site smile

Cependant il y a deux petits points sur lesquels j'ai des questions :

- A quoi sont sensés servir les fichiers "helpers", à éviter la duplication de code ?

- Mon autre question concerne le Controleur. J'ai dans mes Controleurs du code dupliqué, comme par exemple celui-ci :

Code:

function init()
{
    $this->view->baseUrl = $this->_request->getBaseUrl();
    $this->view->setEscape('utf8_encode');
    Zend_Loader::loadClass('MonModule');
}

Je penses que la solution serait de créer ma propre classe en étendant Zend_Controller_Action, es-ce que je me trompe ?
Si non, ou dois-je placer cette nouvelle classe que je nommerai par exemple My_Controller_Action (es-ce un nommage correct ?), étant donné que j'ai jusqu'à maintenant suivi l'arborescence conseillé par le Zend Framework. Dans le dossier /helpers/, ou bien ailleur ?

Merci bien.

Cordialement,
Laurent

Dernière modification par Ouaibou (26-06-2007 19:59:30)

Hors ligne

 

#2 27-06-2007 02:13:02

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

Re: [MVC][RC3]Helpers & Duplication de code

1° point :

il ya deux types (au moins...) de helpers :

les action helpers qui permettent d'ajouter des fonctionnalités à tous tes controllers qui étendent Zend_Controller_Action.

voir le lien suivant :

http://framework.zend.com/manual/en/zen … lpers.html


les view helpers servent à te faciliter la vie quand tu construis tes views. Par exemple le code suivant qui se trouve dans le script de ta vue:

Code:

<?php echo $this->formText('email', 'you@example.com', array('size' => 32)) ?>

Où $this fait référence à la vue en cours, fabrique pour toi un input de type texte.

Tu peux créer tes propres view helpers. Attention, ils ne se limitent pas à cracher du html, tu peux t'en servir de proxy pour accéder à la base et récupérer des infos que tu veux afficher dans ta vue.

2° point, tu as bien la solution d'étendre Zend_Controller_Action (je fais toujours ça, car j'ai toujours besoin de rajouter des initialisations communes à tous mes controlleurs).

En imaginant que tu as un répertoire libraries dans le quel tu as placé ZF, Zend_Controller_Action signifie que Action.php est dans le répertoire libraries/Zend/Controller/Action/Action.php.
Donc tu peux faire un Zend_Loader::loadClass('My_Controller_Action'); si ta classe suit cette arborescence : libraries/My/Controller/Action/Action.php. C'est la convention de nommage employé par ZF. L'usage courant est de nommer ses propres classes en les préfixant de quelques lettres qui font référence à ton projet en cours (par exemple, mes classes commencent par Bew dans mon projet actuel, j'ai donc un Bew_Controller_Action, Bew_View, etc...

Sinon pour initialiser la view à laquelle tu fais référence dans ton exemple tu pourrais aussi utiliser Zend_config pour lire un fichier ini dans lequel tu places tes infos, puis dans index.php, quand tu instancie ta vue, tu passes les paramètres récupérés dans le fichier ini. Comme ça ta view  est paramétrée pour tous tes controllers.

Code:

[view]
view.encoding = "UTF-8"
view.escape = htmlentities
view.strictvars = 1

Ca c'est le contenu du fichier ini, et voici comment le récupérer pour créer ta vue référencée dans le viewRenderer (si tu l'utilises) :

Code:

$view_params = new Zend_Config_Ini($ApplicationDir . '/config/config.ini', 'view');

Zend_Loader::loadClass('Bew_View');

$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
$viewRenderer->setView(new Bew_View($view_params))
             ->setViewSuffix('tpl');

Voilà, voilà, j'ai bien conscience que mes explications sont aussi touffuses que confuses donc n'hésite pas à préciser tes questions.

A+

fred

Dernière modification par fred wolf (27-06-2007 02:15:19)

Hors ligne

 

#3 27-06-2007 09:28:42

Ouaibou
Membre
Date d'inscription: 26-06-2007
Messages: 16
Site web

Re: [MVC][RC3]Helpers & Duplication de code

Ok merci beaucoup.

Ca ma semble beaucoup plus clair smile

Hors ligne

 

#4 27-06-2007 09:54:39

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

Re: [MVC][RC3]Helpers & Duplication de code

fred wolf a écrit:

En imaginant que tu as un répertoire libraries dans le quel tu as placé ZF, Zend_Controller_Action signifie que Action.php est dans le répertoire libraries/Zend/Controller/Action/Action.php.

Je me permet juste un petit commentaire.
Ca ne serait pas libraries/Zend/Controller/Action.php plutôt ?


Société : Direct Info Service

Hors ligne

 

#5 27-06-2007 11:29:33

Ouaibou
Membre
Date d'inscription: 26-06-2007
Messages: 16
Site web

Re: [MVC][RC3]Helpers & Duplication de code

yannux a écrit:

fred wolf a écrit:

En imaginant que tu as un répertoire libraries dans le quel tu as placé ZF, Zend_Controller_Action signifie que Action.php est dans le répertoire libraries/Zend/Controller/Action/Action.php.

Je me permet juste un petit commentaire.
Ca ne serait pas libraries/Zend/Controller/Action.php plutôt ?

Effectivement tu as raison smile

Dernière modification par Ouaibou (27-06-2007 11:34:35)

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