Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous.
Est-il déconseiller d'utiliser des constantes à travers le système MVC de Zend Framework ?
Ne vaut-il pas mieux utiliser Zend_Registry ?
Par avance merci pour vos réponses.
Hors ligne
A la limite si tu veux remplacer des constantes, utilise Zend_Config avec un .ini/xml
Zend_Registry c'est plus pour avoir des variables "super"globals (par exemple pour se trimballer l'adaptateur Zend_Translate dasn toute l'appli)
Hors ligne
tu peux utiliser des constantes et des constantes de classes
les fichier de conf sont a utiliser pour de la conf rien a voir avec une constante qui elle ne peut être changé même par configuration.
enfin tu peux utiliser Zend_Config pour gérer ta config et placer l'objet config dans la registry c'est tout de même ce qu'il y a de plus pratique pour de la conf.
A+JYT
Hors ligne
Donc pour toi sekaijin, je peux utiliser des constantes.
Cela ne risque pas d'interférer avec le système MVC proposer par Zend.
Je déclare comme ci dessous dans le bootstrap :
define('BASE_URL', 'http://www.nationale13.com/'); define('PUBLIC_URL', BASE_URL . "public/"); define('CLIENT_URL', BASE_URL . "client/"); define('ADMIN_URL', BASE_URL . "admin/");
Et le tour est joué.
Bon et bien encore merci pour cette info.
Hors ligne
non pour le base url tu n'a pas besoin de déclarer une constante
Zend a un propriété pour ça
dans ton bootstrap tu fait un setBaseUrl sur le front controller
ensuite ce baseUrl ne doit pas contenir l'adresse du serveur mais uniquement '/' ou '/le/chemin/de/mon/application/'
ZF se charge du reste
si pubic , client et admin sont différent controller ou modules ça ne sert à rien de les déclarer là encore ZF le fait pour toi
A+JYT
Hors ligne
Merci pour tes infos. Une dernière question je ne comprends pas cette histoire de 'module' pour l'url.
j'ai lu que Zend_Controller_Router_Rewrite analyser l'url et la découper en 3 :
"module"/"controlleur"/"action".
Mais à quoi correspond le module ?
Hors ligne
un module est un groupe de contrôleur
par exemple tu mets dans un dossier
/client/controllers des controller pour la gestion client
avec /client/views pour les vue et /client/model pour les modèle pour les client
et pareil pour l'admin
du coup pour accéder à tes contrôleur client tu fais /client/manager/search
ça permet de découper l'application en plusieurs unités
A+JYT
Hors ligne
Bonjour,
J'essaye d'implémenter le module Zend_Translate à mon site.
En prenant exemple sur du code existant, je met mon objet translate dans la registry:
Zend_Registry::set('Zend_Translate', $translate);
Un peu plus haut, Mr.MoOx confirme ce mode de fonctionnement, mais pour récupérer mon objet, pour l'instant je fait un :
$translate = Zend_Registry::get('Zend_Translate');
Action qui se répète dans quasiment toutes mes pages de vue + certaines des controlleurs...
Je trouve cela un peu répétitif, est-ce que je ne passerai pas à coté de quelque chose de plus simple?
Question parallèle, si j'ai plusieurs actions d'un même controlleur qui ont besoin de mon objet translate, comment faire pour n'écrire qu'une seul fois l'appel au registre?
J'ai essayer en le mettant dans la fonction init de mon controlleur mais sans réussite ;-(
D'avance merci à vous.
Hors ligne
Je ne suis pas expert, et certains plus expérimentés que moi me contredirons sûrement, mais pourquoi ne pas passer par un plugin ?
Hors ligne
Depuis Zend_Application, je me suis créé une classe Xxx_Application_Resource_Config qui charge dans le registre une Zend_Config provenant du application.ini.
Hors ligne
Ok, je note la réponse et je vais voir pour me créer une classe Xxx_Application_Resource_Config.
Pour le second point, est-ce que vous auriez une idée?
--> Comment faire pour qu'un controlleur effectue automatiquement une opération quelconque dès qu'on l'appel.
Je pensais que c'était justement le rôle de la fonction init, mais cela ne fonctionne pas.
Merci pour vos réponses.
Hors ligne
Si si le init() sert à ça. C'est que tu dois mal l'utiliser.
Tu l'utilise sur ton controller, sur oun controller commun a ton appli? N'est il pas surchargé ce qui fait que tu "perds" ton code ?
Hors ligne
J'utilise le init() qui est la première fonction déclaré de mon controller qui n'est pas surchargé.
Mais j'ai pu vérifier que dans d'autre controllers cela fonctionnait effectivement.
Je vais regarder plus en détail, car j'ai fait le test sur le controller index qui a peut être un comportement spécifique vis à vis de cette fonction.
En tous cas merci pour ton aide.
@ ++
Hors ligne
Je vais regarder plus en détail, car j'ai fait le test sur le controller index qui a peut être un comportement spécifique vis à vis de cette fonction.
Pas à ma connaissance
Hors ligne
Pages: 1