Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 28-08-2008 18:17:56

elkolonel
Administrateur
Lieu: Grasse
Date d'inscription: 18-12-2007
Messages: 299
Site web

Problème de getParam dans le bootstrap et internationnalisation

Hello tout le monde,

En suivant le tutoriel (très bien fait par ailleurs) de JoeCarbure (http://www.joecarbure.com/dw2/doku.php? … ec_modules), je bloque sur le dernier point qui consiste à définir le bootstrap afin qu'il utilise la langue passée en paramètre dans l'url.

Alors j'aurai une question et un problème.

Je commence par la question : est ce la meilleure façon de mettre un site en multilingue que d'avoir le paramètre de langue dans l'url, n'est il pas plus opportun de placer le paramètre de langue en session par exemple ? Quels sont les intérêts de cette solution ?

Ensuite le problème : en suivant le tutoriel et en tentant de mettre en place le switch permettant la gestion auto des langues en fonction du param passé dans l'url, je tombe sur l'erreur suivante :

Fatal error: Call to a member function getParam() on a non-object in C:\wamp\www\backoffice\application\Bootstrap.php on line 196

Ce qui semblerait indiquer que j'essaye d'utiliser une fonction dans un contexte non objet. Pour rappel la structure proposée pour le bootstrap est la suivante :

Code:

    public static function i18n() {
        // Définition de la langue à afficher
        require_once 'Zend/Locale.php';
        require_once 'Zend/Translate.php';
        
        // Définition des langues
        $language = Zend_Controller_Front::getInstance()->getRequest()->getParam("language", "fr");
        switch ( $language) {
            case "en" :
                $locale = new Zend_Locale ( "en" );
            break;
            default :
                $locale = new Zend_Locale ( "fr" );
            break;
        }
        
        //Chargement du fichier de traduction
        $translator = new Zend_Translate ( 'tmx', 'c:/wamp/www/backoffice/application/modules/admin/translations/admin.tmx', $locale );
        Zend_Registry::set ( 'translator', $translator );    

    }

Qui peut m'indiquer à quel endroit, je tombe en erreur ;-) ?

++
Fred

Hors ligne

 

#2 28-08-2008 19:04:51

lethak
Membre
Lieu: France
Date d'inscription: 05-04-2008
Messages: 168

Re: Problème de getParam dans le bootstrap et internationnalisation

Code:

->_getParam("language", "fr");

a la place de

Code:

->getParam("language", "fr");

en ce qui concerne l'intéret d'avoir la langue dans l'url, c'est pour le référencement par les moteurs de recherche wink


IT Dev @Twitter

Hors ligne

 

#3 28-08-2008 19:13:15

elkolonel
Administrateur
Lieu: Grasse
Date d'inscription: 18-12-2007
Messages: 299
Site web

Re: Problème de getParam dans le bootstrap et internationnalisation

Merci Lethak,

Malheureusement cela ne marcha pas mieux malgré quelque adaption du code :

Code:

    public static function i18n() {
        // Définition de la langue à afficher
        require_once 'Zend/Locale.php';
        require_once 'Zend/Translate.php';
        
        // Définition des langues
        self::$frontController = Zend_Controller_Front::getInstance();
        $language = self::$frontController->getRequest()->_getParam("language", "fr");
        switch ( $language) {
            case "en" :
                $locale = new Zend_Locale ( "en" );
            break;
            default :
                $locale = new Zend_Locale ( "fr" );
            break;
        }
        
        //Chargement du fichier de traduction
        $translator = new Zend_Translate ( 'tmx', 'c:/wamp/www/backoffice/application/modules/admin/translations/admin.tmx', $locale );
        Zend_Registry::set ( 'translator', $translator );    
    }

J'obtiens toujours la même erreur... :-(

Hors ligne

 

#4 29-08-2008 08:45:45

grandlap
Membre
Date d'inscription: 22-07-2008
Messages: 50

Re: Problème de getParam dans le bootstrap et internationnalisation

Salut,

si tu appelles ta méthode avant le dispatch, la requête n'est pas définie et getRequest retourne null

Hors ligne

 

#5 29-08-2008 09:06:37

lethak
Membre
Lieu: France
Date d'inscription: 05-04-2008
Messages: 168

Re: Problème de getParam dans le bootstrap et internationnalisation

grandlap a écrit:

Salut,

si tu appelles ta méthode avant le dispatch, la requête n'est pas définie et getRequest retourne null

j'allais le dire wink

http://www.kitpages.fr/cms/site/tutoria … lobale.jpg

a partir de routeshutdown tu peux y accéder, utilise un plugin a mon avis wink

http://framework.zend.com/manual/fr/zen … ugins.html


IT Dev @Twitter

Hors ligne

 

#6 29-08-2008 11:14:32

elkolonel
Administrateur
Lieu: Grasse
Date d'inscription: 18-12-2007
Messages: 299
Site web

Re: Problème de getParam dans le bootstrap et internationnalisation

lethak a écrit:

http://www.kitpages.fr/cms/site/tutoriaux/sequence_globale.jpg

a partir de routeshutdown tu peux y accéder, utilise un plugin a mon avis wink

http://framework.zend.com/manual/fr/zen … ugins.html

Merci pour ces précisions.
Donc concrètement, je dois écrire toute la function i18n dans la methode routeShutdown du plugin ? C'est bien ça ?

Je vais essayer...

Hors ligne

 

#7 29-08-2008 12:02:55

grandlap
Membre
Date d'inscription: 22-07-2008
Messages: 50

Re: Problème de getParam dans le bootstrap et internationnalisation

ben si tu utilises un plugin et sa méthode routeShutdown, la requête est passée en paramètre

Code:

    public function routeShutdown (Zend_Controller_Request_Abstract $request)
    {

        $this->parlezVousAnglais();
        $this->whereIsLeTourEffeil();
        //etc
        
    }

[edit]
damn ! j'ai oublié le plus important

Code:

        $this->monTailleurEstRiche();

[/edit]

Dernière modification par grandlap (29-08-2008 12:04:20)

Hors ligne

 

#8 29-08-2008 12:14:03

acharrex
Membre
Lieu: Suisse
Date d'inscription: 27-04-2008
Messages: 135

Re: Problème de getParam dans le bootstrap et internationnalisation

Salut,

Effectivement il vaut mieux utiliser un plugin. D'ailleurs je suis désolé de ne pas encore avoir modifié mon tutoriel.
Cela devrait être fait durant le week-end.

wink

Edit : voilà un début de réponse http://www.z-f.fr/forum/viewtopic.php?pid=9950#p9950

Dernière modification par acharrex (29-08-2008 17:01:47)

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