Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przekazywanie danych o sciezce plikow widoku do kontrolera, Dont Repeat Yourself. Jak ?
jacekkobus
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 1
Dołączył: 4.09.2009

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


Czesc.

Zaprezentuje na przykladach:
To narazie mam:
  1. #(jestesmy w kontrolerze akcji)
  2. $widok = Some_View('index/plik.phtml');
  3. $widok->setScriptsDirectory('application/tutaj_modul/view/scripts/tutaj_kontroler');
  4.  
  5. (...)
  6.  
  7. return $widok->render();


A chce:
  1. #(jestesmy w kontrolerze akcji)
  2. $widok = Some_View('index/plik.phtml');
  3. return $widok->render();


Pierwsze rozwiazanie to oczywiste zlo. Przy okazji kazdy nowy widok (klasa Some_View) wymagalby takiej samej procedury,
co przy podziale strony na osobne elementy - z uzyciem layoutu, stanowilo by spore uniedogodnienie.

Jak byscie rozwiazali ten problem ?

Mam kontroler frontowy, rejestr, w kontrolerze akcji mam rowniez dostep do obiektu request. Obiekt request ma dostep do nazwy kontrolera, akcji i modulu.
W zendzie rozwiazane jest to na zasadzie ... pluginu. I nie do konca to pojmuje.

Teoretycznie moglbym zrobic jeszcze:

  1. $widok = Some_View('index/plik.phtml', $this->request);


... i wydedukowac sciezke do ow plikow widoku z tego, co daje mi request, ale to tez wydaje sie byc srednim rozwiazaniem.
Nie chcialbym angazowac tutaj (wewnatrz Some_View) zmiennych statycznych. Powinienem ?

W sumie prosilbym o przyklad jakiegos wzorca. Stosowane praktyki...

Myslalem nad fabryka inicjalizowana w bootstraperze, ktora przekazywana by byla do kontrolera akcji i produkowala widoki wstrzykujac im
te opcje konfiguracyjne, ale tu mam inny dylemat - gdzie ow fabryke przechowac. We froncie, a moze w rejestrze, a moze ma byc statyczna ...

Bede wdzieczny za pomoc.

Ten post edytował jacekkobus 19.01.2010, 22:40:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


Cytat
Ogolnie troszke dziwnie Ci to wyszlo. Nie myslales, zeby np.: "addJs" wylaczyc do osobnego obiektu, helpera czy tez pluginu ?
Ja mam klase Object_Header ktora rozszerza klase Some_View i ow obiekt zawiera metody addJs, addCss, setTitle itd.

Wtedy robie:

$strona = new Some_View('strona.phtml');

$strona->header = new Object_Header();
$strona->header->setTitle('tytul strony');

return $strona->render();

Formularze na przyklad rowniez sa u mnie rozszerzeniem klasy widoku, z tym ze zawieraja metody odpowiadajace za dodawanie pol itd...


plugin to calkiem inna bajka.

Po co mam sobie utrudniac zycie i miec 3 klasy view 4 helpery jak i tak tego nie bede uzywal?

Klasa prosta spelnia swoje zadanie i tak ma byc pod moja implementacje jest dobra.

Formularze wole pisac na sztywno nie widze powodu zeby robic cos w stylu:

  1.  
  2. $forms = new Form();
  3.  
  4. $forms -> OpenForm('post','self');
  5.  
  6. $forms -> AddInputText('login');
  7.  
  8. //i inne badziewia
  9.  


Jak narazie takie cos mi nie upraszcza zycia tylko je komplikuje.

Jednak nie rozumiem twojego problemu masz juz opis co i jak teraz tylko to zaimplementuj i potestuj ja nie wiem jak dziala i jak wyglada twoj system wiec rozwiazanie jest bardziej subiektywne niz obiektywne, to bardziej zalezy od ciebie ma pasowac tobie nie jakiemus pr0 programiscie ktory ci powie nie tak jest do dupy.

Go to the top of the page
+Quote Post

Posty w temacie


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: 15.10.2025 - 20:09