[RESOLU] Retourner une variable dans un flux (structure mvc)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Retourner une variable dans un flux (structure mvc)

Re: Retourner une variable dans un flux (structure mvc)

par Incognito » 15 janv. 2015, 21:52

J'ai compris en fait, dans le champs action je mets index.php et j'include mon fichier prochier dans index.PHP...

Re: Retourner une variable dans un flux (structure mvc)

par xTG » 15 janv. 2015, 20:19

Alors je ne sais pas quelle idée tu te fais du MVC mais en voici un exemple tout à fait correct qui t'éclaircira sans doute beaucoup de choses :

notes.php
<?php
/* Modèle */
$tableau = array();
$moyenne = 0;
$fichier = "notes.txt"

/* Contrôleur */
$tableau = file($fichier); // récupération des données
$nb_notes = sizeof($tableau);
foreach($tableau as $note)
   $moyenne += $note;
$moyenne = $moyenne / $nb_notes;

/* Vue */
?>
<html>
<body>
Notes :
<?php
foreach($tableau as $note)
   echo $note . ',';
?>
<br />
Moyenne : <?php echo $moyenne; ?>
</body>
</html>
Le but de ce pattern est de répartir les traitements ni plus, ni moins.
Je peux modifier la partie Vue sans avoir à retoucher la partie Contrôleur ou Modèle par exemple car ils sont totalement séparés.

Re: Retourner une variable dans un flux (structure mvc)

par Incognito » 15 janv. 2015, 19:10

Justement, j'ai eu l'idée de mettre mon appel de méthode dans la page index.php...

et de mettre index.php dans le champ action...

Mais du coup je trahis l'arcitecture MVC, non ?

Re: Retourner une variable dans un flux (structure mvc)

par xTG » 15 janv. 2015, 18:32

Tu postes ton formulaire vers process.php qui ne contient aucun affichage.
Le seul code prévu pour gérer cet affichage se trouve dans index.php. ;)
Modifie ton champs action.

Re: Retourner une variable dans un flux (structure mvc)

par Incognito » 15 janv. 2015, 16:51

OK, mais tu casses ma structure MVC....

Re: Retourner une variable dans un flux (structure mvc)

par tof73 » 15 janv. 2015, 16:21

un peu d'html :
<form method="post" action="process.php">
<input type="submit" name="submitChoiceCity" value="Choisir cette ville" />
</form>
un peu de php (process.php) :
class Essai {       
        public function essai(){
                        $e="hello";
                        return $e;
                        }                      
}

if(isset($_POST['submitChoiceCity'])){
                $weather=new Essai;
                $e = $weather->essai();
echo $e;
}

Re: Retourner une variable dans un flux (structure mvc)

par Incognito » 15 janv. 2015, 16:10

J'ai testé ce code...tout simple mais je me retrouve avec aucun affichage dans mon flux...

index.php:
<?php

<form method="post" action="process.php">

<input type="submit" name="submitChoiceCity" value="Choisir cette ville" />
<?php

include('process.php');
if(isset($e)){
echo $e;
}
else {
echo "erreur";
}
?>
</form>
>
process.php:
<?php
include('Essai.php');

if(isset($_POST['submitChoiceCity']))
{
		$weather=new Essai;
		$weather->essai();
}
Essai.php:
<?php

class Essai {
	
	public function essai(){
			$e="hello";
			return $e;
			}
			
			}

Re: Retourner une variable dans un flux (structure mvc)

par Incognito » 15 janv. 2015, 13:19

Aucune redirection se fait dans ma classe...

Re: Retourner une variable dans un flux (structure mvc)

par xTG » 15 janv. 2015, 12:37

header('location:../index.php');
C'est une redirection vers le fichier index.php.
Il faut donc l'enlever et vérifier qu'il n'y en a pas d'autres dans ta class qui ne devraient pas être présent.

Re: Retourner une variable dans un flux (structure mvc)

par Incognito » 15 janv. 2015, 11:45

J'ai ajouté cela a la fin de ma méthode :
$req2->closeCursor();
		header('location:../index.php');
		return $e;
	}

Re: Retourner une variable dans un flux (structure mvc)

par xTG » 15 janv. 2015, 11:41

Mais $e me renvoi toujours rien...(enfin si, il me renvoi sur la page process_weather.php...)
Si tu as une redirection qui s'effectue c'est que la class en gère une dans certains cas.

Re: Retourner une variable dans un flux (structure mvc)

par Incognito » 15 janv. 2015, 11:35

Je ne définis aucune constantes ni d'attributs dans ma classe :
<?php

class Weather {
	
	public function getNextDay($n){
J'utilise une version classique de structure mvc...( un formulaire sur index.php avec action="process.php", et ensuite dans le fichier process j'"include" mon fichier Class.php...)et ensuite dans mon fichier index.php j'"include" mon fichier process.php...

J'ai ajouté cela à la fin de ma méthode :
$req2->closeCursor();
		header('location:../index.php');
		return $e;
	}

Re: Retourner une variable dans un flux (structure mvc)

par xTG » 14 janv. 2015, 20:21

Mais $e me renvoi toujours rien...(enfin si, il me renvoi sur la page process_weather.php...)
Si tu as une redirection qui s'effectue c'est que la class en gère une dans certains cas.
Il faudrait la regarder pour comprendre ce qui peut occasionner cela (constante non définie ? paramètre manquant dans l'initialisation ?).

Re: Retourner une variable dans un flux (structure mvc)

par Incognito » 14 janv. 2015, 16:22

Pour parer au problème, j'ai mis l'adresse complète...
<!DOCTYPE html>
<?php
$e=NULL;
include('C:\wamp\www\meteo\process\process_Weather.php');
echo $e;
?>
Mais $e me renvoi toujours rien...(enfin si, il me renvoi sur la page process_weather.php...)

En fait, je voudrais que $e s'affiche dans le flux de ma page index...

Faut t'il un header ?

Re: Retourner une variable dans un flux (structure mvc)

par xTG » 14 janv. 2015, 14:28

L'ordinateur ne peut mentir. ;)

Ce que tu tentes de faire représente une architecture de dossier comme ça :

Code : Tout sélectionner

www/ class/ Weather.php meteo/ process/ process_weather.php index.php
Or je suppose que ton dossier class est plutôt dans le dossier meteo.
Donc ton chemin d'include n'est pas correct.