Précédent   Forum du club des développeurs et IT Pro > PHP > Bibliothèques et frameworks > symfony1
symfony1 Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 15/10/2012, 12h29   #1
flora806
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 325
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 325
Points : 36
Points : 36
Par défaut déclarer variables statiques dans une classe controller

Bonjour,

Pour éviter de répéter des bouts de code dans ma classe Controller, je voudrais déclarer des variables statiques pour pouvoir les récupérer par la suite dans certaines de mes fonctions, mais j'ai une erreur:
syntax error, unexpected T_VARIABLE, expecting T_FUNCTION..
quand j'insére au début de la classe:
Code :
1
2
 
public $var = sfConfig::get('var_name');
En lisant la doc, j'ai vu qu'il y a une méthode "preExecute()"

Code :
1
2
3
4
5
 
public function preExecute()
{
  $this->var = sfConfig::get("var_name");
}
mais dans la doc symfony c'est marqué que le code est à chaque fois exécuté dans toutes les actions, alors que je souhaiterais les récupérer uniquement dans 2 de mes actions :
Code :
1
2
3
4
5
6
7
 
 
public function preExecute()
  {
    // The code inserted here is executed at the beginning of each action call
    ...
  }
A votre avis quel est le meilleur moyen de le faire?
Merci!!!!!!!
flora806 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 13h07   #2
gototog
Membre éprouvé
 
Homme Renaud B
Inscription : septembre 2009
Messages : 351
Détails du profil
Informations personnelles :
Nom : Homme Renaud B
Âge : 23
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2009
Messages : 351
Points : 472
Points : 472
Je crois que l'erreur unexpected T_VARIABLE, expecting T_FUNCTION est renvoyé car tu utilise ta variable dans aucune fonction (ou en tout cas tu utilises "public" lors de sa déclaration).
essaye par exemple dans executeIndex
$var= sfConfig::get('var_name'); (sans public)
ou dans une classe
$this->var= sfConfig::get('var_name');
gototog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 13h47   #3
flora806
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 325
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 325
Points : 36
Points : 36
En fait pour l'instant j'ai:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
public function executeAction1(sfWebRequest $request)
 {
$var1= sfConfig::get('var1_name');
$var2= sfConfig::get('var2_name');
$var3= sfConfig::get('var3_name');
....
}
 
public function executeAction2(sfWebRequest $request)
 {
$var1= sfConfig::get('var1_name');
$var2= sfConfig::get('var2_name');
$var3= sfConfig::get('var3_name');
....
}
 
public function executeAction3(sfWebRequest $request)
 {
...
 
}
donc, je voulais savoir si $var1, $var2, $var3 peuvent être déclarés comme attributs de la classe Controller et récupérés une seule fois, au lieu de répéter le même code dans les fonctions.
flora806 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 14h02   #4
gototog
Membre éprouvé
 
Homme Renaud B
Inscription : septembre 2009
Messages : 351
Détails du profil
Informations personnelles :
Nom : Homme Renaud B
Âge : 23
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2009
Messages : 351
Points : 472
Points : 472
quelque part dans ton action:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
protected function initialisationVariables(sfWebRequest $request){
$this->var1= sfConfig::get('var1_name');
$this->var2= sfConfig::get('var2_name');
$this->var3= sfConfig::get('var3_name');
}
 
public function executeAction1(sfWebRequest $request)
 {
$this->initialisationVariables($request);
 
}
 
public function executeAction2(sfWebRequest $request)
 {
$this->initialisationVariables($request);
....
}
utilise quand meme un "var_dump($this->var1);exit;" pour vérifier que tes variables sont bien initialisés dans ton executeAction1, mais pour moi ca marche
gototog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 15h49   #5
flora806
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 325
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 325
Points : 36
Points : 36
oui, ça marche bien comme ça et j'arrive à récupérer mes variables dans les fonctions quand j'ai besoin, Merciiii

juste une dernière question, puis-je récupérer ces mêmes variables dans mon template par exp "showSuccess"?
flora806 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 16h59   #6
gototog
Membre éprouvé
 
Homme Renaud B
Inscription : septembre 2009
Messages : 351
Détails du profil
Informations personnelles :
Nom : Homme Renaud B
Âge : 23
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2009
Messages : 351
Points : 472
Points : 472
dans l'action, si tu a un $this->toto, tu retrouvera cette variable dans ton template sous le nom $toto sans avoir rien besoin de faire
gototog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 17h02   #7
flora806
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 325
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 325
Points : 36
Points : 36
Citation:
Envoyé par gototog Voir le message
dans l'action, si tu a un $this->toto, tu retrouvera cette variable dans ton template sous le nom $toto sans avoir rien besoin de faire
oui exactement, sinon en faisant aussi dans mon executeShow:
Code :
1
2
3
 
 
$this->initialisationVariables($request);
je peux récupérer directement aussi ma variable $var1 dans le template
flora806 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 17h11   #8
gototog
Membre éprouvé
 
Homme Renaud B
Inscription : septembre 2009
Messages : 351
Détails du profil
Informations personnelles :
Nom : Homme Renaud B
Âge : 23
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : septembre 2009
Messages : 351
Points : 472
Points : 472
Citation:
Envoyé par flora806 Voir le message
oui exactement, sinon en faisant aussi dans mon executeShow:
Code :
1
2
3
 
 
$this->initialisationVariables($request);
je peux récupérer directement aussi ma variable $var1 dans le template
c'est moins propre car normalement tes traitements se font dans l'action, donc autant monter ton $this->initialisationVariables($request) hors du template.
gototog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 17h26   #9
flora806
Nouveau Membre du Club
 
Inscription : mars 2007
Messages : 325
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 325
Points : 36
Points : 36
Citation:
Envoyé par gototog Voir le message
c'est moins propre car normalement tes traitements se font dans l'action, donc autant monter ton $this->initialisationVariables($request) hors du template.
mais je fais pas ça au niveau du template, mais au niveau de mon controller j'ai rajouté ça:

Code :
1
2
3
4
5
6
7
 
public function executeShow(sfWebRequest $request)
  {
  .......
  $this->initialisationVariables($request);
 
  }
ce qui me permet de récupérer dans mon template showSuccess : $var1...
je ne sais pas si j'étais claire
flora806 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h06.


 
 
 
 
Partenaires

Hébergement Web