Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Przypisanie wyniku funkcji modelu do zmiennej w view
-Tarvald-
post
Post #1





Goście







Witam,
Probuje zbudowac swoj wlasny mvc framework (w celu nauki mvc oraz oop). W modelu mam funkcje ktora zwraca tablic. Chciałbym tą tablice przenies do modelu aby juz w koncowym pliku view html zforeachowac ja i odpowiedni wyswietlic.
Chcialem skopiowac ja przez controller ale niestety to mi nie zadzialalo:

  1. <?php
  2.  
  3. class glowna extends Controller {
  4.  
  5. function __construct() {
  6. parent::__construct();
  7. $this->view->render('glowna');
  8. parent::loadModel('glowna');
  9.  
  10. }
  11.  
  12. public function wyswietl(){
  13. $this->view->kategorie = $this->model->pobierzKategorie();
  14. }
  15. }
  16. ?>
  17.  


Jak takie operacje wykonywać?
jezeli w funkcji wyswietl() dodalbym var_dump($this->view->kategorie) wygladałby na to że wszystko jest ok. Ale zmienna po opuszczeniu pliku (tak mysle) sie zeruje i juz w samym view jest null. Czy potrzebujecie jeszcze jakis kawalek kodu?
Go to the top of the page
+Quote Post
-rh-
post
Post #2





Goście







return
Go to the top of the page
+Quote Post
-Gość-
post
Post #3





Goście







Jest zrobione return w pobierzKategorie. Zwraca tablice.
Go to the top of the page
+Quote Post
Turson
post
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


A inne dane do widoku są poprawnie przesyłane? Jak nie, to widocznie nie ma komunikacji z widokiem
Go to the top of the page
+Quote Post
-Tarvald-
post
Post #5





Goście







No właśnie. $this->view->render() odpala się poprawnie, ale przypisanie tablicy do zmiennej kategorie ktora zainicjalizowalem w view już nie idzie.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Z Twojego kawałka kodu nic nie wynika.... Nie wiemy czy WYSWIETL odpala sie przed RENDER czy moze po? Nie wiemy tak naprawde nic i błąd może byc na dobrą sprawe wszedzie
Go to the top of the page
+Quote Post
tzm
post
Post #7





Grupa: Zarejestrowani
Postów: 675
Pomógł: 58
Dołączył: 17.12.2013

Ostrzeżenie: (10%)
X----


  1. class View {
  2. function render($file, $variables = array()) {
  3. $template_dir = $_SERVER['SERVER_NAME'].'/swgame/template/';
  4. extract($variables);
  5. include_once $template_dir.$file;
  6. $renderedView = ob_get_clean();
  7. return $renderedView;
  8. }
  9. }
  10.  
  11. $view = new View();
  12. $view->render('test.php', array('foo' => 'bar'));


Spróbuj tak, tylko zmień $template_dir
Go to the top of the page
+Quote Post
-Tarvald-
post
Post #8





Goście







No wiec tak moze najpierw źródła:

  1. class glowna extends Controller {
  2.  
  3. function __construct() {
  4. parent::__construct();
  5. $this->view->render('glowna');
  6. parent::loadModel('glowna');
  7. $dump = $this->model->pobierzKategorie();
  8. $this->view->kategorie = $dump;
  9. echo 'glowna konstruktor dziala';
  10. }
  11. }
  12.  


W tym momencie po var_dump($this->view->kategorie) dostaje to co chcialem. Jest bosko. Ale niestety w view:

  1. <?php
  2.  
  3. class View {
  4.  
  5. public $kategorie;
  6.  
  7. function __construct(){
  8. var_dump($this->kategorie); // zwraca wartosc null ;/
  9. }
  10.  
  11. public function render($name){
  12.  
  13. require ('Views/'.$name.'/'.$name.'.php');
  14.  
  15. }
  16. }
  17.  
  18. ?>


Dostaje wartosc null !

Dorzuce jeszcze main controller:

  1.  
  2. class Controller {
  3.  
  4. public $model;
  5. public $view;
  6.  
  7. function __construct(){
  8. $this->view = new View();
  9. }
  10.  
  11. public function loadModel($name){
  12. $path = 'models/help_'.$name.'.php';
  13. if(file_exists($path)){
  14. require $path;
  15. $modelname = 'help_'.$name.'';
  16. $this->model = new $modelname();
  17. $this->view->model = new $modelname();
  18. }
  19. }
  20. }


Pomozcie?
Droga do zostania Junior Developerem jest dluga i krepa ;/
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Najpierw renderujesz widok, a dopiero potem, juz po wyrenderowaniu, do tego widoku podpinasz dane i sie glupio dziwisz ze nie dziala....

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 16:06