Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je souhaite effectuer la traduction de mon application vers la langue spécifier par l'utilisateur et qui est enregistrer dans la base de donnée et donc j'ai mis ce code dans le bootstrap :
public function _initTranslate() { $translate = new Zend_Translate('array', APPLICATION_PATH . '/languages/ar/ar.php', 'ar'); $utilisateur = new Application_Model_DbTable_Utilisateur(); $utl= $utilisateur->getUtilisateur(); $langue= $utl['langue']; $locale = new Zend_Locale($langue); $translate->setLocale($locale); Zend_Registry::set('translate', $translate); }
(bien évidement j'ai aussi mis le code nécessaire dans '/languages/ar/ar.php')
Le but est de changer directement la langue de l'application une fois l'utilisateur effectue ce changement dans une certaine view.
Mais le problème survient dans la ligne du code :
$utilisateur = new Application_Model_DbTable_Utilisateur();
sachant bien que celà marche dans les controllers de mon application.
je n'ai pas compris pourquoi je ne peux pas instancier un classe de DbTable dans le bootstrap !!!
Je vous prie de m'aider pour ce problème car j'ai beaucoup cherché mais je n'ai pas trouvé de solution. Merci d'avance
Hors ligne
Bonjour,
Idéalement, il serait préférable d'utiliser le service manager pour instancier votre modèle.
C'est plus simple et cela évite d'avoir de multiples instances.
Quoi qu'il en soit, le nom du modèle m'intrigue : il utilise des underscores.
N'auriez-vous pas gardé de vieilles habitudes du ZF1 en oubliant qu'il faut désormais utiliser les namespaces ?
Hors ligne
Merci beaucoup d'avoir répondu,
Mais je suis vraiment débutante dans le développement avec Zend et je serais très reconnaissante si vous me dites ce que je doit mettre exactement au lieu du code que j'ai publié car je suis totalement perdu. Merci
Hors ligne
Bonjour, ce code est du code issue de la version 1 du zendframework et cette section a pour but d'apporter du support sur la version 2 de ce framework... Le service manager n'existe donc pas sur le ZF1. Je déplace donc le sujet dans la bonne section.
Hors ligne
Bonjour à toi,
Je n'ai pas lu ton code mais je m'aperçois que tu ne donnes pas le message d'erreur...
Il faut arrêter de voir le ZF comme magique, ce qui marche dans un controlleur devrait marcher dans le bootstrap ?
Et bien oui c'est possible encore faut-il lui en laisser la possibilité mais ça ne se fait pas tout seul...
bref je suppose que ton message d'erreur est :
Fatal error: Uncaught exception 'Zend_Db_Table_Exception' with message 'No adapter found for Application_Model_DbTable_Utilisateur' ....
Si c'est le cas, c'est qu'au moment au ta méthode est appelée par Zend_Application, ton adapter de base de données n'est pas encore défini.
Ensuite je ne sais pas si tu l'as défini avec une méthode _init() ou via un plugin de ressources donc je ne peux pas te donner la solution à ton problème mais à priori si tu commences ta méthode par :
public function _initTranslate() { //---- assurance que _initDb() est bien appelé en amont $this->bootstrap('db'); $translate = new Zend_Translate('array', APPLICATION_PATH . '/languages/ar/ar.php', 'ar'); $utilisateur = new Application_Model_DbTable_Utilisateur();
Cela devrait résoudre ton problème.
Mais encore une fois, merci d'être plus précis dans l'énoncé des problèmes rencontrés
Hors ligne
Pages: 1