Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wczytanie klas modelu do widoku?
Forum PHP.pl > Forum > PHP > Object-oriented programming
Pytajka
Witam,

mam pewien problem, otóż nie wiem w jaki sposób przekazać z modelu do widoku odpowiednie dane.

Katalog wygląda tak -



Działanie jest następujące index.php w katalogu głównym wywołuje bootstrap.php ( libs), który na podstawie linku ładuje określony kontroller z katalogu controllers, ten następnie za pomocą view.php ( libs), ładuje odpowiedni widok. W widoku mam odwołania do metod z klas w modelu, problem w tym, że tak jakby nie współpracują razem.

Każdy wywołany kontroler ( katalog controllers) dziedziczy główny kontroler ( libs), a z niego konstruktor w którym znajduje się metoda

  1. function __autoload( $class){
  2.  
  3. require_once 'models/class.'. $class .'.php';
  4.  
  5. }
Crozin
Cytat
[...] problem w tym, że tak jakby nie współpracują razem.
I czym objawia się brak tej współpracy?
Pytajka
Cytat(Crozin @ 23.04.2012, 11:04:06 ) *
I czym objawia się brak tej współpracy?


Cytat
Notice: Undefined variable: brick in /opt/lampp/htdocs/testi/view/index.php on line 15

Fatal error: Call to a member function loadAll() on a non-object in /opt/lampp/htdocs/test/view/index.php on line 15


Przy wywołaniu w widoku $brick->loadAll();
Crozin
Undefined variable: brick - to jest chyba dosyć wymowne, racja? A późniejszy błąd jest konsekwencją tego.
Pytajka
Tak, wiem, dlatego pytam jak mam przekazać dane z modelu do widoku?
Crozin
Nawet nie wiem do czego odesłać osobę, która nie potrafi przekazać zmiennej z jednego obiektu do drugiego...
http://www.php.net/manual/en/language.oper....assignment.php
http://www.php.net/manual/en/function.return.php
?
Pytajka
Tyle to ja wiem, tylko nie wiem gdzie wywołać odpowiednią klasę, aby widok miał do niej dostęp.
Orzeszekk
Nie ma lepszego sposobu na nauczenie sie MVC jak praca na uznanym i dobrze napisanym frameworku ktory wymusza pewne konwencje kodowania.

Najlepszym frameworkiem MVC jaki znam jest asp.net mvc ale to nie ten język więc jak sie domyslam symfony2 również powinno dać radę.
naprawde szkoda tracic czasu na wynajdywanie koła na nowo.
Cysiaczek
Jeśli definiujesz w kontrolerze zmienne, które potem mają znaleźć się w widoku, to dobrym rozwiązaniem jest utworzenie kontenera (obiektu), który przechowuje wartości wraz z nazwami pod jakimi mają występowac w widoku.
  1. function __construct(){
  2. $this->DataContainer=new ViewDataContainer();
  3. }
  4.  
  5. function myAction(){
  6. $this->setVar('nazwa', 'wartosc');
  7. }
  8.  
  9. function setVar($sName, $mValue){
  10. $this->DataContainer->add($sName, $mValue);
  11. }
  12.  


Teraz taki obiekt rozpakowujesz za pomoca funkcji extract()
przed includowaniem pliku szablonu
To oczywiście najprostsze rozwiązanie, nie pozbawione wad.

Pozdrawiam
marcio
Przepraszam ze stocze na chwile z tematu, jesli post uznacie za nie na miejscu prosze usunac.

Cytat
To oczywiście najprostsze rozwiązanie, nie pozbawione wad.

Czy moglbys napisac wady tego rozwiazania i zalety innych?(mowa o extract)
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.