Bonjour à tous,

je développe un formulaire de saisie à l'aide du framework Zend. Pour certains éléments du formulaire, un validateur zend est affecté pour verifier que la saisie est bien faite après validation.
Comme j'utilise des métadonnées des objets représentant les tables de ma base de données, les résultats des méthodes de récupérations des métadonnées des formulaires sont mis en cache à l'aide des 2 composants du Zend Framework:
- zend_shm_cache_fetch
- zend_shm_cache_store.

C'est dans mon fichier bootstrap.php qu'est définie la mise en place de "caching" pour les métadonnées des classes de table:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
                $backendOptions = array();
		$frontendOptions = array('lifetime' => 10800,
		            'automatic_serialization' => true);
 
		$cache = Zend_Cache::factory('Core', 'APC', $frontendOptions, $backendOptions);
		Zend_Db_Table_Abstract::setDefaultMetadataCache ( $cache );
Puis dans une classe contenant les fonctions métiers pour les récupérations des informations, je fais appel au 2 composants Zend cités ci-dessus pour le stockage et la récupération des métadonnées en cache.

Voilà pour ce qui concerne la mise en place du cache des métadonnées.

Venons en au problème:

Lorsque je teste mon formulaire de saisie avec une erreur sur un des éléments, après validation, j'ai un message d'erreurs qui s'affiche. Quand je corrige mon erreur en ne saisissant rien pour cet élément, puis que je valide, j'ai toujours le message d'erreur alors que dans mon formulaire j'ai bien rien de saisi pour cet élément.
Ce n'est qu'en saisissant une valeur correcte ou en réaffichant la page du formulaire de saisie vierge que je n'ai plus l'affichage du message d'erreur.

Me disant qu'il s'agit d'un problème de cache, j'ai donc modifié mon code en vidant le cache après validation du formulaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
                // On reçoit une requête POST (validation par un submit)
		if ($this->getRequest ()->isPost ()) { 
			$cache = Zend_Db_Table_Abstract::getDefaultMetadataCache();
			$cache->clean(Zend_Cache::CLEANING_MODE_ALL);
                        //... gestion de validation formulaire
Mais apparemment, le cache n'est pas vidé?!
J'ai essayé de faire le "nettoyage" autrement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
                // On reçoit une requête POST (validation par un submit)
		if ($this->getRequest ()->isPost ()) { 
			if(zend_shm_cache_clear())
				echo "Nettoyage du cache en mémoire partagée";
Mon echo s'affiche bien mais le même message d'erreur également!

Y a -t- il un autre moyen de forcer de vider le cache?

Merci d'avance pour vos réponses....