Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
J'ai une problématique à vous soumettre.
Contexte :
Sur un site catalogue, je souhaite mettre en cache mon menu contenant l'ensemble des catégories du catalogue. Pour ce faire, je suis parti sur un cache de haut niveau afin de mettre en cache directement le code HTML de celui-ci.
Dans mon controller Catalogue, j'ai créé une méthode _loadSideMenu() que j'appel dans chacune des Actions de ce même controller afin de charger le placeholder qui recevra ce menu.
Problématique
Afin de faire ça, j'ai configuré mon cache frontend avec le gestionnaire "Function" car j'ai cru voir que c'est avec celui-ci que l'on pouvait mettre en cache un retour de fonction. (Si je fais fausse route, n'hésitez pas à me le dire)
Afin de charger mon menu tout en le metant en cache, j'ai voulut passer par la méthode call
$cache = Zend_Registry::get('cache'); $cache->call(array($this, '_loadSideMenu'));
Le problème, c'est que j'ai une exception car call ne peut pas gérer de méthode comme call_user_func_array, il ne peut gérer que des functions.
D'ailleurs, voici l'extrait du Zend Framework qui lève l'exception :
private function _makeId($name, $parameters) { if (!is_string($name)) { Zend_Cache::throwException('Incorrect function name'); } if (!is_array($parameters)) { Zend_Cache::throwException('parameters argument must be an array'); } return md5($name . serialize($parameters)); }
Questions
Peut-on mettre en place un système de cache de cette manière avec la méthode Call ?
Comment indiquer à Call de prendre en compte une méthode ?
Merci pour votre retour et vos expériences
Dernière modification par arnolem (19-05-2010 16:16:20)
Hors ligne
Concernant la question sur l'appel d'une méthode, j'ai trouvé. Il faut utiliser le gestionnaire de cache Zend_Cache_Frontend_Class à la place de Zend_Cache_Frontend_Function. Méaculpa, J'avais mal lu la documentation.
Concernant la méthode Call, ça ne peux pas marcher dans mon cas car j'utilise en placeholder. Je ne peux pas non plus utiliser Zend_Cache_Frontend_Output car avec le placeholder capture déjà le flux.
Je vais ouvrir un autre post plus précis sur cette question maintenant que j'ai ciblé une nouvelle problématique.
Hors ligne
Pages: 1