Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-01-2013 15:21:10

amyamou
Nouveau membre
Date d'inscription: 15-01-2013
Messages: 3

Problème pour instancier une classe DbTable dans le bootstrap

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 :

Code:

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 :

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

 

#2 15-01-2013 15:28:18

jmleroux
Membre
Lieu: Nantes
Date d'inscription: 14-11-2012
Messages: 32
Site web

Re: Problème pour instancier une classe DbTable dans le bootstrap

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

 

#3 15-01-2013 15:39:47

amyamou
Nouveau membre
Date d'inscription: 15-01-2013
Messages: 3

Re: Problème pour instancier une classe DbTable dans le bootstrap

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

 

#4 15-01-2013 15:48:13

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1252

Re: Problème pour instancier une classe DbTable dans le bootstrap

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.


ZendFramework 2 Certified Architect

Besoin d'un freelance Zend Framework ?

Hors ligne

 

#5 21-01-2013 16:28:50

Juch
Membre
Lieu: Paris 17e
Date d'inscription: 29-04-2009
Messages: 48

Re: Problème pour instancier une classe DbTable dans le bootstrap

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é wink 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 :

Code:

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

 

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