Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonsoir à tous !
Bon ce coup ci, je ne sais vraiment pas comment faire
Je souhaites utiliser un fichier de traduction par controller, mais pour cela, il faut que je puisse récupérer le nom du controller avant le $front->dispatch()
Malheureusement quand je fais un
$front->getRequest()->getControllerName()
il me pète une erreur ... normal vu que l'objet request n'est pas encore défini.
Quelqu'un aurai une idée de comment récup le nom du controller qui va être exécuté avant le dispatch ?
Merci !
Lex
Hors ligne
As tu essayer un plugins et le preDispatch() ?
class traduc extends Zend_Controller_Plugin_Abstract { public function preDispatch($request) { $request->getControllerName() } }
Hors ligne
Bonjour Lex,
Et pour enregistrer le plugin de TiTerm, tu ajoutes dans ton index.php
$controller->registerPlugin(new traduc());
Si tu veux que ton actionController soit déjà instancié, il faudra passer par un Helper et pas un Plugin.
A+, Philippe
Hors ligne
philippe, a quel endroit utiliserais tu l'action helper avant le dispatch ?
Dans le preDispatch de l'action ?
Hors ligne
J'aurais tendance à mettre le code dans le preDispatch du helper. Comme ça je pourrais ajouter le translateur directement dans l'action controller (comment ça c'est pas clair ?). Voilà l'exemple :
class Kitpages_Translation_Helper extends Zend_Controller_Action_Helper_Abstract { public function preDispatch() { $controlleurName = $this->getRequest()->getControllerName(); $translator = new MyTranslator($controllerName); $this->getActionController()->translator = $translator; } }
et dans le index.php
Zend_Controller_Action_HelperBroker::addHelper(new Kitpages_Translation_Helper());
Et après dans ton action, tu peux utiliser directement $this->translator
Quand j'aurais fini mes 2 projets en cours, je ferais un tuto sur les plugins et les helpers... C'est assez mal expliqué dans la doc, mais c'est magique c'est deux trucs... (compter fin aout )
A+, Philippe
Hors ligne
Ah oui, tout bete, j'avais loupé le preDispatch des helpers...
Hors ligne
Je me suis mis il n'y a pas très longtemps au Zend_Framework, donc je ne connaissais que de loin tout ce dont vous me parlez.
Je vais regarder cela ce soir quand je serai de retour chez moi!
En tout cas merci pour vos conseils et vos remarques
Je vous tiens au courant
Hors ligne
Bonsoir tout le monde,
J'ai enfin un peu de temps pour m'occuper de cela
J'ai donc suivi les conseils de Philippe et j'ai l'impréssion qu'il n'aime toujours pas
J'ai le droit à un jolie
Fatal error: Call to a member function getRequest() on a non-object in /home/www/private/XXX/dev/www/library/Zend/Controller/Action/Helper/Abstract.php on line 117
J'ai mis le addHelper au niveau du constructeur de ma classe étendant Zend_Controller_Action
abstract class XXX_Controller extends Zend_Controller_Action { public function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, array $invokeArgs = array()) { parent::__construct($request, $response, $invokeArgs); Zend_Controller_Action_HelperBroker::addHelper(new XXX_Translation_Helper());
Je cherche ou est ce que j'ai pu me tromper, et je reviens vers vous !
Lex
Dernière modification par Lex (24-07-2007 23:01:54)
Hors ligne
Je viens de tester avec les plugins, et ca à l'air de vouloir fonctionner ....
Je comprend pas ce que j'ai pu faire de pas bien avec les helper ...
Hors ligne
Bah c'est tout bete, tu ajoutes ton helpers dans le contructeur de ton controller qui n'est pas encore instancié.
Le add helper doit se faire dans le bootstrap (ton index.php)
Hors ligne
TiTerm a écrit:
Bah c'est tout bete, tu ajoutes ton helpers dans le contructeur de ton controller qui n'est pas encore instancié.
Le add helper doit se faire dans le bootstrap (ton index.php)
En faites j'ai un peu tout testé hier soir, et lorsque je mets mon addHelper dans mon index.php avant (ou après) l'instanciation de mon Zend_Controller_Front, ca revient au même ....
Je retesterai plus en profondeur ce soir, histoire de voir.
Dernière modification par Lex (25-07-2007 09:40:07)
Hors ligne
Bonjour Lex,
Tu peux nous envoyer le code de ton helper ? J'ai l'impression qu'il y a un truc bizarre dans ton preDispatch (du genre un appel à getRequest() sur un objet qui n'existe pas).
A+, Philippe
Hors ligne
philippe a écrit:
Bonjour Lex,
Tu peux nous envoyer le code de ton helper ? J'ai l'impression qu'il y a un truc bizarre dans ton preDispatch (du genre un appel à getRequest() sur un objet qui n'existe pas).
A+, Philippe
Bonjour Philippe ^^
Mon Helper ressemble grosso modo à celui que tu m'avais mis en exemple.
Je posterai tout le code utile ce soir.
J'ai trouvé une autre solution pour faire ce que je veux faire avec mon objet "Translation", mais pas très propre ^^
Dernière modification par Lex (25-07-2007 09:49:57)
Hors ligne
Bonsoir à tous !
Et bien finalement ca marche !
Je vois pas ce que j'ai fais de moins qu'hier, mais j'ai tout repris de zéro et ca fonctionne.
Pour info:
Zend_Loader::loadClass('Zend_Controller_Action_Helper_Abstract'); Zend_Loader::loadClass('XXX_Translation_Core'); class XXX_Translation_Helper extends Zend_Controller_Action_Helper_Abstract { public function preDispatch() { $controlleurName = $this->getRequest()->getControllerName(); $translator = new XXX_Translation_Core($controlleurName); $this->getActionController()->translator = $translator; } }
class XXX_Translation_Core extends Zend_Translate { public function __construct($controller_name) { echo $controller_name; } }
et dans le bootstrap
Zend_Loader::loadClass('XXX_Translation_Helper'); Zend_Controller_Action_HelperBroker::addHelper(new XXX_Translation_Helper()); $front = Zend_Controller_Front::getInstance();
Merci à tous pour votre aide précieuse!
Lex
Hors ligne
Encore un petit soucis, mais qui n'a rien à voir...
J'ai une erreur
Fatal error: Exception thrown without a stack frame in Unknown on line 0
Dès que je fais
parent::__construct(Zend_Translate::AN_GETTEXT, array());
dans mon objet qui étend Zend_Translate
Une idée ? Je sèche la ^^
Dernière modification par Lex (25-07-2007 21:22:10)
Hors ligne
Bonjour,
Ton 2e paramètre est faux, il faut mettre le nom du fichier de translation (le .mo si tu utilises gettext).
cf : http://framework.zend.com/manual/en/zen … ce.gettext
A+, Philippe
Hors ligne
philippe a écrit:
Bonjour,
Ton 2e paramètre est faux, il faut mettre le nom du fichier de translation (le .mo si tu utilises gettext).
cf : http://framework.zend.com/manual/en/zen … ce.gettext
A+, Philippe
Bonjour !
J'ai vu une mauvaise doc alors Faut que je prenne l'habitude d'aller sur la doc officielle ^^
Merci !
Lex
Hors ligne
Je me suis plus renseigner au niveau de l'erreur
Fatal error: Exception thrown without a stack frame in Unknown on line 0
La plupart du temps elle est levée quand une exception est levée et qu'il ne peux pas l'afficher (pour une raison X ou Y)
hier soir je l'ai eu car il ne trouvait pas mon fichier "mo"
Quand c'est comme ca je conseille de faire un test et de ne pas lever d'exception mais d'utiliser trigger_error('blah blah', E_USER_WARNING)
Lex
Hors ligne
Pages: 1