Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/12/2010, 01h52   #1
Futur Membre du Club
 
Inscription : février 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 42
Points : 19
Points : 19
Par défaut Utiliser un objet dans une vue

Bonsoir,

Mon "routeur" instancie test_model et lance mon fichier /views/test/méthode.php.

Pour mes testes, j'ai
Code :
1
2
3
4
5
6
7
8
9
10
11
class Test2_model
{     
	function __construct()
	{
		echo "model de test2 construit </br>"; 
		$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
	        $test2 = json_decode($json);    
         	echo $test2->a;
	}
 
}
à l'intérieur de la classe, $test2->a donne bien le résultat attendu.
Par contre, dans mon fichier template:

Code :
	<h3><?php echo $test2->a ;?></h3>
ne donne rien.

ça me semble logique, mais je ne trouve pas la manière de faire.

Merci
Ju
leccux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 02h33   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
comment ton controller envoie les données a ta vue ?


ps : c'est
Code :
public function __construct()
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 14h53   #3
Futur Membre du Club
 
Inscription : février 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 42
Points : 19
Points : 19
Merci

Citation:
Envoyé par stealth35 Voir le message
comment ton controller envoie les données a ta vue ?
Je teste mon routeur d'URL . Là je suis dans le cas l'hypothèse où je n'ai pas de contrôleur de test2 mais une vue et un modèle:

Pour info, la méthode de mon router qui se charge du dispatching (version temporaire):

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
	public static function dispatch($object,$action) {
	        if (file_exists('appli/models/'.$object.'_model.php'))
	        {
 
	                include 'appli/models/'.$object.'_model.php';
	               	$model_class = $object."_model";    
		        		  $model = new $model_class();
	        }
	        if (file_exists('appli/controllers/'.$object.'_controller.php'))
	        {
 
	                include 'appli/controllers/'.$object.'_controller.php'; 
		        			$controller_class = $object."_controller";    
		        			$controller = new $controller_class();	                
	        }
	        elseif (file_exists('appli/views/'.$object.'/'.$action.'.php'))
	        {
 
	                include 'appli/views/'.$object.'/'.$action.'.php' ;	                
	        }
	        else
	        {
 
	                echo 'rien à faire ici';
	        }
 
	}
leccux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 19h00   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
va falloir faire un extract a un moment donnée
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 22h44   #5
Futur Membre du Club
 
Inscription : février 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 42
Points : 19
Points : 19
Citation:
Envoyé par stealth35 Voir le message
va falloir faire un extract a un moment donnée
Ok merci je vais bouquiner ça.

Mais je ne comprends pas pourquoi il n'est pas possible d'accéder aux propriétés de mon objet.
leccux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 23h27   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par leccux Voir le message
Ok merci je vais bouquiner ça.

Mais je ne comprends pas pourquoi il n'est pas possible d'accéder aux propriétés de mon objet.
parce que $test2 n'existe que dans le scope de le methode __construct
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 15h13   #7
Futur Membre du Club
 
Inscription : février 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 42
Points : 19
Points : 19
Citation:
Envoyé par stealth35 Voir le message
parce que $test2 n'existe que dans le scope de le methode __construct
j'imagine que c'est l'équivalant de la porté des bloques pour les variables (?).
Donc, comment faire en sorte que mon objet soit accessible à ma vue (et qu'il ne soit plus réservé à la méthode de l'objet qui l'instancie)?

J'ai essayé return $test2 mais sans résultat. extract j'ai du mal à saisir.

Merci beaucoup
ju
leccux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 01h12   #8
Futur Membre du Club
 
Inscription : février 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 42
Points : 19
Points : 19
cette fonction dans mon model ne me permet pas d'utiliser mon object dans la vue.

Code :
<?php echo $test2->a ;?>
ne donne malheureusement rien
leccux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 09h01   #9
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 456
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 456
Points : 2 541
Points : 2 541
Envoyer un message via Skype™ à rawsrc
Bonjour,
Citation:
comment faire en sorte que mon objet soit accessible à ma vue (et qu'il
ne soit plus réservé à la méthode de l'objet qui l'instancie)?
Il faut que l'objet qui instancie un autre objet l'expose via un getter par exemple ou que l'instance interne soit accessible via la visibilité de sa variable : public/protected (restrictions).
Enfin il te reste la méthode la plus sale : global... (oublie que je t'en ai parlé)
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2010, 13h44   #10
Futur Membre du Club
 
Inscription : février 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 42
Points : 19
Points : 19
Citation:
Envoyé par Xysyo Voir le message
Bonjour,
Enfin il te reste la méthode la plus sale : global... (oublie que je t'en ai parlé)
Une variable glo quoi? non tu ne m'en as jamais parlé

Merci.
En m'inspirant de ta réponse, j'ai imaginé cette solution:

Dans le model:
Code :
1
2
3
4
	  $test2 = json_decode($json, true);
		foreach ($test2 as $key => $value) { 
			$this->$key = $test2[$key];   
		}
Et dans la vue:
Je trouve la solution pas dégueu, mais si tu as plus élégant, je suis preneur.

Bien cordialement
Bonne fin d'année.
leccux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h50.


 
 
 
 
Partenaires

Hébergement Web