Bonjour,
J'ai laissé une question sur le Forum Conception/POO mais je ne suis pas certain d'y obtenir une réponse car ce forum n'est pas très actif, et parce qu'il y est question de la conception MVC/PHP d'une tuto adapté à mon projet.
Je vais donc essayer de l'expliquer ici à nouveau.
J'ai développé un site Internet en me basant sur le tuto de Julien Pauli. J'ai du me battre pas mal car les concepts sont un peu survolés, mais bon, c'est quand même une bonne base de départ.
On peut y remarquer que les variables sont envoyées à la vue sous la forme d'array qui sont ajoutées à un objet Response sous la forme :
où $this->_response est mon instance d'objet Response dans mon contrôleur d'action,
Code : Sélectionner tout - Visualiser dans une fenêtre à part $this->_response->addVar('var', $array);
$var est la variable qui sera utilisée dans le fichier vue.php sous la forme
et $array la variable de type array() à afficher, par exemple une occurrence d'une table récupérée par PDO. Eh oui, ici, je ne récupère que des array() avec PDO, comme sur le tuto, puisque je ne peux afficher que ça.
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo $var['attribut'];
Le but de cette question est le suivant.
J'ai pu remarquer, dans des exemples sur le net ou sur ce site, l'utilisation de la syntaxe suivante pour l'affichage :
or, avec le système que j'utilise, je ne peux qu'utiliser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo $var->attribut
puisque je n'ai que des array à manipuler.
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo $var['attribut'];
Comment donc, envoyer à ma vue, des objets ? si tant est que c'est la bonne question.
Quels sont les changements à effectuer ? où ? comment ?
Je rappelle ici quelques bouts de code qui sont utilisés :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php class View { public function render($file, $assigns = array()) { extract($assigns); ob_start(); require($file); $str = ob_get_contents(); ob_end_clean(); return $str; } }Je n'en met pas plus, mais je peux le faire sur demande.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class Controller_Action { ... ... public function render($file) { $this->_response->addVar('config', $_SESSION['config']); $this->_response->addVar('login', $_SESSION['login']); $this->_response->addVar('message', $this->_response->getMessage()); $view = new View(); $this->_response->setBody($view->render(VIEWS . '/' .$file, $this->_response->getVars())); }
D'avance merci
Partager