Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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).
<?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 : 
$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) : 
$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
Une solution pas du tout élégante mais qui fonctionne :
$navConfig = new Zend_Config_Xml($menu->getContent()); $varConfig = $navConfig->toArray(); array_walk_recursive($varConfig, array($this, '_decodeUtf8'));
private function _decodeUtf8(&$value, $key)
    {
        $value = utf8_decode($value);
    }Hors ligne
Pages: 1