Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Rola bootstrap'a oraz modelu
Forum PHP.pl > Forum > PHP > Frameworki
azeli
Witam serdecznie,

Staram się zrozumieć poprawnie ZendFramework i po przestudiowaniu kilku artykułów oraz pracy nad pierwszy prostym projektem nasuwa mi się kilka pytań. Jako, że zależy mi aby programować zgodnie z konwencją wzorca oraz frameworka chciałbym to wyjaśnić.

1) Jaka jest dokładnie rola Bootstrap'a jeśli chodzi o inicjowanie danych? Skoro inicjujemy tam np. Doctype to z tego co rozumiem powinno się tam inicjować "globalne" funkcje, które posłużą we wszystkich (większości) widokach.

2) Gdzie w projekcie podczas wywołania w Bootstrap _init... będą widoczne te wartości? Na pewno w widokach, ale czy powinno (można) używać ich także w kontrolerach?

3) W jaki sposob prawidlowo powinienem zaladowac plik JSON do widoku? Rozumiem, ze powinienem stworzyc model, tam dodac operacje ladowania pliku i nastepnie dekodowania JSON oraz przeslac to do kontrolera a ten do widoku? Czy tak? Niezbyt rozumiem w jaki sposob przekazac dane pomiedzy modelem a kontrolerem i widokiem.

Jesli ktos zna artykuly lub ma cos do polecenia to chetnie poczytam. Przepraszam, jesli pytania sa nieprecyzyjne ale jeszcze nie opanowalem dobrze terminologii OOP w ZF.

Pozdrowka
Fluke
Ja też jestem początkującym ZF ale myślę że coś mogę pomóc:

1) Jeśli chodzi o Doctype to inicjowanie go w Bootstrap jest raczej zbędne, od tego jest widok i tam go wywołujesz za pomocą odpowiedniej metody helpera Zend_View:
  1. $doctypeHelper = new Zend_View_Helper_Doctype();
  2. $doctypeHelper->doctype('XHTML1_STRICT');


2) metoda _init w bootstrapie jest przeznaczona do ustawiania zachowania całej aplikacji czyli jeśli chcesz załadować translator z odpowiednim językiem możesz wywołąć
  1. ...
  2. function _initTranslate()
  3. {
  4. $translate = Zend_Translate();
  5. ....
  6. }
  7. ...


3) W modelu raczej przesyłasz array`ie, które są tworzone z danych z bazy danych(i nie tylko). Model jeszcze jest odpowiedzialny za akcje kontrolera, czyli w zależności co kontroler przekaże to modelu(w parametrach metod) ten ma obrobić dane oraz przesłać w postaci array(i nie tylko). Natomiast kontroler przesyła dane do widoku, który ten przesyła do kontrolera i tak w kółko. Widok nie ma dostępy bezpośredniego do Modelu. Cala komunikacja opiera się przez kontroler.

Jeśli chcesz przesłać tablice w postaci JSON do widoku to robisz w kontrolerze $this->view->assign("tablicaJSON", json_encode($array));

Mam nadzieję, że coś pomogłem
Pozdrawiam smile.gif

Jeśli chodzi o Doctype to możesz go wywołać w widoku(w pliku .phtml) w ten sposób:
  1. $this->doctype("HTML5");
azeli
Dzieki za komentarz. Glownie chodzi mi o to, ze nie chce miec balaganu w projekcie. Chciałbym dane i konfiguracje mieć w jednym miejscu czy pliku. Niezbyt przekonuje mnie rozwiązanie aby w każdym widoku ręcznie wpisywać doctype. To nie najlepszy przykład, ale co jeśli chcę go zmienić? Oczywiście to tyczy się wielu innych elementów konfiguracji.

(Pomijam kwestie bazy danych)

Czy uwazacie, ze dla roznych danych zwracanych z bazy powinno sie tworzyc osobny model, czy jednak polaczyc to?

Czuje ze bardzo trudno bedzie mi obrac odpowiednia konwencje do programowania sad.gif Skad mam wiedziec do jakich operacji dodac model, do jakich kontroler; tzn. kiedy jest granica miedzy zastosowaniem jednego modelu/widoku/kontrolera a kiedy nalezy je dzielic i jakie zaleznosci sa miedzy nimi sad.gif

Fluke
Doctype dodajesz w pliku z layout, jeśli masz więcej niż 1 moduł do wklejasz do każdego ale tylko raz.

Do modelu:
Jeśli masz tabele 'user' to tworzysz model User i on ma odpowiedzialność za wyciąganie danych z bazy oraz ich modyfikację. Możesz również stworzyć modele typu User_Update, User_Select, User_Inser...i tak dalej, wedle uznania.

1) Widok przekazuje dane do kontrolera metodą POST lub GET lub innym sposobem (formularze)
2) Kontroler wyciąga dane z modelu i przekazuje do widoku
3) Kontroler wyświetla przeważnie 1 widok, który zazwyczaj jest nazwą akcji kontrolera, w widoku zawsze możesz podzielić dany lay na inne i za pomocą metody action bądź render wyświetlasz resztę.

W widoku nie umieszczasz nic innego jak czysty html i przekazane zmienne z kontrolera.
Model ma za zadanie przetworzyć dane przekazane z kontrolera, wykonać zapytania do bazy i zwrócić wynik jaki chciał kontroler.
azeli
Okej, dzieki bede drazyc. Najwyzej na konkretnych przykladach w kodzie cos popytam.
Dzieki wielkie za odpowiedz
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.