Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] [Résolu] Zone , paramUrl , cache

Posted by Estee on 02/06/2008 01:08

Bonsoir,

Je souhaite passer en paramètre le nom d'un utilisateur vers une zone.

J'ai lu la doc mais je ne resou pas mon problème. mon code me parait louche , malgré qu'il fonctionne.

1) sauf que dans le cache un fichier est généré pour chaque utilisateur (pourtant je n'ai pas mis ( protected $_cacheParams = array('nom'); )

1) je ne comprends pas non plus le fait de mettre 2 fois "$nom = $this->getParam('nom') " c.a.d dans la zone et dans le controleur, pour que sa fonctionne.

  

Voici mon code désoler si ma question est simpliste ... je débute, merçi d'avance.

Controleurs :

 function viewprofile(){
 		$rep = $this->getResponse('home');
 
 		$nom = $this->param('nom');
 
 		$rep->body->assignZone('MAIN', 'user~profile',array('nom'=>$nom));	

Zone :

 class profileZone extends jZone {
 	protected $_useCache = true;
 	protected $_cacheTimeout = 60; 
 
 	protected $_tplname='profile';
 	protected function _prepareTpl(){
 
 		$nom = $this->getParam('nom');
 
 		$fact = jDao::get('user~users') -> getByLogin($nom);
 		$this->_tpl->assign('record',$fact);
     }
 }
 

Template profile.tpl :

 {if $record}
 <dl>
   <dt>uid :</dt>
   <dd>{$record->uid}</dd>    
   <dt>Login :</dt>
   <dd>{$record->login|escxml}</dd>
   <dt>Email :</dt>
   <dd>{$record->email|escxml}</dd>  
 </dl>
 {else}
  <p>Cette fiche n'existe pas!</p>
 {/if}
	

  [Opened] Re: Zone , paramUrl , cache

Reply #1 Posted by laurentj on 02/06/2008 09:54

Salut,

sauf que dans le cache un fichier est généré pour chaque utilisateur (pourtant je n'ai pas mis ( protected $_cacheParams = array('nom'); )

Je viens de me rendre compte qu'en fait ce _cacheParams n'est plus utilisé. Il y a donc toujours un cache différent pour chaque valeurs différentes des paramètres. Je vais essayer de remonter dans l'historique des modifications de cette classe pour voir pourquoi. (c'est donc peut etre la doc qui n'a pas été mis à jour)

Mais en même temps vouloir un même cache pour tous les utilisateurs, ce n'est pas forcément ce que tu veux n'est-ce pas ? Si tu demandes d'afficher la zone pour le user titi et que ça utilise le cache crée lorsque la zone a été affiché pour toto, je ne vois pas trop l'intérêt (puisqu'alors ce serait les infos sur toto qui seraient affichées).

je ne comprends pas non plus le fait de mettre 2 fois "$nom = $this->getParam('nom') " c.a.d dans la zone et dans le controleur

Alors déjà je ne vois pas où tu vois deux fois getParam. Dans le contrôleur c'est $this->param, et dans la zone $this->getParam. De plus, il ne s'agit pas des mêmes paramètres. Dans le premier c'est un paramètre de requête http, dans le deuxième c'est un paramètre de zone. Enfin, je ne vois pas comment PHP se débrouillerai pour savoir d'où vient $nom dans le contrôleur ou dans la zone, si tu ne l'initialise pas... Enfin bref, je ne vois pas de problème ici. Tu aimerais que ça se fasse comment tout ça ?

  [Opened] Re: Zone , paramUrl , cache

Reply #2 Posted by Estee on 02/06/2008 10:04

Oui je souhaite un cache pour chaque page_profil utilisateur afficher, mais dans le cas que j'ai cité, si je fais deux requetes sur l'utilisateur toto j'ai deux fichier cache generer. Je referais un essai ce soir après le boulo. Merçi

Alors déjà je ne vois pas où tu vois deux fois getParam.

Oupsss voilà ce que ça fait de jelixer à 1 heures du matin ;-) autant pour moi ($this->param ; $this->getParam) c'est mes yeux lol

Merçi Laurent.

  [Opened] Re: Zone , paramUrl , cache

Reply #3 Posted by Estee on 02/06/2008 17:58

Tout fonctionne correctement (cache et script) je ne sais pas pourquoi j'avais 2 fichiers par appel avant dans le cache, je n'ai pas réussis à le reproduire ce soir ... j'en ai profiter pour enlever _cacheParams de mes fichiers.

Voiçi mon code pour les debutant comme moi :

Controleurs :

 function viewprofile(){
		$rep = $this->getResponse('home');

		$rep->body->assignZone('MAIN', 'user~profile', array('nom'=>($this->param('nom'))));	

        return $rep; 
	}

Zone :

 class profileZone extends jZone {
 	protected $_useCache = true;
   	protected $_cacheTimeout = 60; 

  	protected $_tplname='profile';
  	protected function _prepareTpl(){
		
		$fact = jDao::get('user~users') -> getByLogin($this->getParam('nom'));
		$this->_tpl->assign('record',$fact);

           }
         }

Template profile.tpl :

 {if $record}
 <dl>
  <dt>uid :</dt>
  <dd>{$record->uid}</dd>    
  <dt>Login :</dt>
  <dd>{$record->login|escxml}</dd>
  <dt>Email :</dt>
  <dd>{$record->email|escxml}</dd>  
 </dl>
 {else}
 <p>Cette fiche n'existe pas!</p>
 {/if}

	

Merci.

 
Page
  1. [Résolu] Zone , paramUrl , cache