Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekazywanie z kontrolera do widoku
Forum PHP.pl > Forum > PHP
croc
Witajcie,

jak rozwiązujecie kwestię przekazywania zmiennych z kontrolera do widoku? Chodzi mi o to, by odwoływać się w widoku normalnie do zmiennych, jak na przykładzie:
  1. <div><?php echo $vegetable; ?></div>

A w kontrolerze przekazywać tę zmienną np. tak:
  1. $view->vegetable = 'Marchew';

Chciałbym, by zmienne przekazywane do widoku w żaden sposób nie kolidowały z tymi w kontrolerze.

Czy rozwiązuje się to zamieniając po prostu zmienne z widoku $view->zmienna na $zmienna na końcu skryptu i potem wczytując widok np. przez require_once czy jest jakiś bardziej wyszukany sposób?
Spawnm
http://pl2.php.net/extract
croc
Dzięki, ale nie to jest istotą problemu w tym temacie smile.gif
CuteOne
Ja bym to zrobił tak jak w zendzie
  1. <?php
  2. class View {
  3.  
  4. public function __set($key, $value) {
  5.  
  6. $this->_vars[$key] = $value;
  7. }
  8.  
  9.  
  10. public function __get($key) { // można dodać sprawdzanie czy odwołujemy się do zmiennych prywatnych
  11.  
  12. if(isset($this->_vars[$key])) {
  13.  
  14. return $this->_vars[$key];
  15. }
  16. }
  17.  
  18. public function render($tpl) {
  19.  
  20. include $tpl;
  21. $h = ob_end_flush();
  22.  
  23. echo $h;
  24. }
  25. }
  26.  
  27.  
  28. class Controller {
  29.  
  30. public $inna = 'bbb';
  31.  
  32. public function __construct() {
  33.  
  34. $view = new View();
  35.  
  36. $view -> zmienna = 'aaaa';
  37. $view -> render();
  38. }
  39. }
  40.  
  41. // plik $tpl z funkcji render
  42.  
  43. <table>
  44. <tr>
  45. <td><?php echo $this->zmienna; ?></td>
  46. <td><?php echo $this->inna; ?></td> // :)
  47. </tr>
  48. </table>
  49. ?>
croc
To brzmi całkiem sensownie, dzięki! Wszelkie inne sugestie mile widziane, tak dla porównania. smile.gif
Crozin
Zamiast takich potworków, lepiej użyj najzwyklejszej tablicy do przekazania danych i przekaż ją jako drugi argument metody View::render().
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.