![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Zacząłem pisac swój Framework opierając sie na MVC i możliwie największym OOP, aby następne aplikacje wychodzące z moich rąk były bardziej moja zasługą niż innych (CodeIgniter przede wszystkim). No i do pewnego momentu wszystko było ok. Teraz dwa pytania:
1. Jak przesyłać dane do widoku? Chodzi mi o powiedzmy jedną wielka tablicę asocjacyjną, w której będą pod odpowiednimi indeksami odpowiednie dane i wysłać ją do widoku, żeby tam była widoczna. Po zwykłym includowaniu pliku widoku (przez widok rozumiem większośc kodu HTML z dodatkami php) nie było widać żadnych zmiennych, i w tym problem, bo chyba tak powinno być. Czytałem kod w CI, żeb zobaczyć jak tam jest to rozwiązane, ale od czytania tego kodu rozbolała mnie głowa a najgorsze, że nic z tego nie zrozumiałem ;/ 2. Jak napisać klase do ładowania innych klas? Powiedzmy, że mamy kontroler, z którego chcemy wywołać model. Możemy napisac prostą funkcję, która może wyglądać przykładowo tak:
i będzie nam zwracała obiekt, który przypiszemy do zmiennej. Ale jak załadować klasę do załadowywania klas? Mam nadrzędny kontroler po którym dziedziczą wszystkie inne i jak w tych "wszystkich innych" rozwiązać ten problem? Mógłbym w każdym robić nową instancje obiektu i ładować cały plik funkcją powyżej ale czy to ma sens? I jak załadować widok? Tutaj potrzebuję odpowiedzi na pierwsz epytanie bo jak na razie stoję w miejscu. Myślałem nad rozwiązaniem stosowanym w CI, $this->nazwaKlasy->nazwaMetody() - ale jak tego dokonać? Mógłbym prosić o jakąś pomoc albo namiary jak to wykonać? Przeszukałem juz google i tutejsze tematy o MVC ale przeważnie pisane jest o tym jak korzystać lub czy dobrze ktoś z tego (z MVC) korzysta a nie jak coś zrobić. Bardzo liczę na czyjąś pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
blooregard - coś właśnie takiego udało mi się w nocy sklecić. Mamy nadrzędną klasę View z metodami do ustawiania tytułów, stylów, tagów META itd, oraz główną metodę z szablonem strony (większość kodu HTML plus wstawki pól tej klasy) i po wywołaniu tej metody zostaje wyświetlone wszystko co zostało zapisane w odpowiednich polach klasy View. Dodatkowo, można stworzyć dodatkową klasę dziedziczącą po klasie View i w niej zawrzeć mniejsze, dodatkowe metody, które sa małymi widokami do których można wysyłać dane w postaci tablic. A że w głównej klasie jest metoda, która w zależności od drugiego parametry albo dopisuje do pola $this->sContent treść strony (html) albo zapisuje tylko podaną treść, można też w klasie podrzędnej dodawać na końcu każdej metody metodę z klasy nadrzędnej, by w samym kontrolerze pisac tylko nasze dodatkowo napisane metody, które to zajmą sie i generowaniem HTML, i przesyłaniem wszystkiego do głównego pola klasy View.
Tylko teraz tak się zastanawiam, jeśli w głównym polu klasy View, $this->sContent, można tylko dopisywać lub nadpisywać dane, to czy nie wyjdzie na to, że kontroler w pewnym sensie będzie generował widok tak, jaka jest kolejność wywoływanych w nim dodatkowych metod z klasy podrzędnej? Wiecie o co mi chodzi? No chyba, że rozwiązac to jakoś inaczej, dodatkowo dodać nowe pola w klasie podrzędnej i do nich zapisywać odpowniedni kod HTML wygenerowany w mniejszych metodach a na końcu, po wygenerowaniu wszystkich danych, uruchomić gówną metodę w klasie podrzędnej View, która nam to wszystko skleci w logiczną, zależną od nas całość (bo ustawimy sobie kolejność wyświetlania danych z pól klasy podrzędnej jak będziemy chcieli w danym momencie) i dodatkowo wywoła metode z klasy nadrzędnej, która nam wyświetli juz gotowy kod HTML, całą stronę. Ten post edytował adbacz 13.10.2011, 13:08:08 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 01:34 |