Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 17-03-2011 10:08:48

fran'
Nouveau membre
Date d'inscription: 08-04-2010
Messages: 2

Zend_Navigation, Zend_Config_Xml charset iso-8859-15

Bonjour,

J'utilise le Zend_Navigation à partir d'un fichier navigation.xml encodé en iso-8859-15. J'utilise cet encodage car ma BDD utilise toujours un encodage Latin. Mes pages HTML doivent être encodées en ISO.
La migration de ma base en UTF-8 n'est pas à l'ordre du jour... (no comment).

Code:

<?xml version="1.0" encoding="ISO-8859-15"?>
<config>
    <auth>
        <id>auth</id>
        <label>Un super label avec accents ééé</label>
        <type>uri</type>
        <resource>ma_ressource</resource>
        <privilege>consulter</privilege>
        <pages>
            <page_0>
                <type>uri</type>
                <label>Ma page</label>
                <uri>#</uri>
                <resource>mon_autre_ressource</resource>
                <privilege>consulter</privilege>
            </page_0>
    </auth>
</config>

Dans mon contrôleur :

Code:

$navConfig = new Zend_Config_Xml($menu->getContent());
$this->_navigationContainer = new Zend_Navigation($navConfig);
$acl = $this->getUser()->acl;
$role = 'user';
$this->view->navigation($this->_navigationContainer)->setAcl($acl->privileges)
                                      ->setRole($role);

Dans mon template (qqch comme ça, j'utilise Smarty3 en moteur de template) :

Code:

$this->navigation()->menu();

Problème, mon menu est affiché en UTF-8 et non pas en iso-8859-15 ?

A priori, le problème vient du fait que Zend_Config_Xml (utilise simplexml) donc ça renvoie de l'UTF-8 (à ma connaissance, simplexml n'est pas capable de renvoyer de l'ISO) d'où le problème.

Quelqu'un aurait-il une astuce pour régler ce problème (mis à part parcourir mon container de Zend_Navigation et faire un utf8_decode sur l'ensemble de mes labels) ?

Merci,
Fran'

Hors ligne

 

#2 17-03-2011 10:55:36

fran'
Nouveau membre
Date d'inscription: 08-04-2010
Messages: 2

Re: Zend_Navigation, Zend_Config_Xml charset iso-8859-15

Une solution pas du tout élégante mais qui fonctionne :

Code:

$navConfig = new Zend_Config_Xml($menu->getContent());
$varConfig = $navConfig->toArray();
array_walk_recursive($varConfig, array($this, '_decodeUtf8'));

Code:

private function _decodeUtf8(&$value, $key)
    {
        $value = utf8_decode($value);
    }

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