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