2010-06-10 3 views
1

Je suis récemment tombé sur un problème. J'ai plusieurs partiel qui sont dans plusieurs actions et ont une autre façon d'afficher les données, donc j'ai utilisé l'option contextuelle dans cache.yml en tant que tel:Suppression du cache d'une partie contextuelle dans Symfony 1.4

_list: 
    enabled: true 
    contextual: true 

Maintenant, je devais retirer le cache partiel lorsque les données ont été mis à jour , ce qui est normalement assez facile lorsqu'il s'agit d'un cache partiel non contextuel ou d'un cache d'actions.

Toutefois, lorsque j'essaie de supprimer ce cache, j'obtiens uniquement des valeurs de retour nulles et le cache n'est pas supprimé. Comme ceci:

$uri = '@sf_cache_partial?module=comment&action=_list&sf_cache_key='.$id; 
$cache_manager = $this->getContext()->getViewCacheManager(); 
$cache_manager->has($uri) // return true 
$cache_manager->remove($uri) // return null 
$cache_manager->has($uri) // return true, cache is still there 

J'ai essayé de jouer avec la quatrième option de sfViewCacheManager :: remove, qui est le contexte, en tant que tel:

$context = 'space/show/sf_culture/fr/slug/'.$slug.'/tab/news/comment/_list/'.$id; 
$cache_manager->remove($uri, '', '', $context); // return null 

Quelqu'un sait comment faire cela? Je suis désespéré: P

Merci.

+0

Je ne connais pas la réponse à votre question, mais je pense que vous pourriez découvrir ce qui ne va pas avec la fonction remove() en effectuant un débogage pas à pas, par exemple avec XDebug. Bonne chance! – greg0ire

Répondre

0

Eh bien, il semble qu'il y avait un bug dans sfFileCache. J'ai soumis un patch au bugtracker de symfony. Pour référence, vous pouvez voir le ticket et le correctif here.

Questions connexes