![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Witam...
Zastanawiam sie ostatnio i wymyslic nie moge jak zrealizowac dzialanie takie jak to. Kontroler uruchamia akcje index ta ustawia widok no i mamy strone glowa. Ten sam kontroler pewnie bedzie sprawowal kontrole nad akcjami typu pokaz liste newsow, pokaz caly news itp. Jednak na co zrzucic odpowiedzialnosc na male zmiany wyswietlania na stronie glownej. Powiedzmy ze gdzies w lewym panelu strony (przyjmujac uklad logo, lewy panel, czesc glowna) mamy liste jakis kategori. Po kliknieciu w liste ta lista zamienia sie w spis rzeczy w kategori. Efekt tego taki ze cala strona pozostaje bez zmian, zmienia sie tylko ten jeden fragment. Czy pisac akcje dla takiego czegos i uruchamiac ja przez glowny kontroler ? No raczej nie, mozna by napisac taka akcje ktora by poprosila model o dane, ustawila odpowiedni widok, OK. No ale co z widokiem ? Trzeba by bylo zrobic osobny template w ktorym rozni sie tylko ten jeden element ? Wedlug mnie bezsensu, bo chcialbym aby czesc glowna niezaleznie od tego gdzie sie uzytkownik znajduje pozostala taka sama. Nie bede przeciez robil dodatkowych templatow dla kazdego instniejacego templatu tylko po to by zmienic jeden blok. Spodziewam sie ze z pomoca przychodzi tutaj BlockController FrontController . Przyznam szczerze nie bardzo potrafie sobie wyobrazic jak to wszystko ma dzialac na dwoch kontrolerach. Jak wy rozwiazujecie takie wyswietlania ? Ten post edytował thornag 27.08.2006, 20:07:41 -------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
![]() |
|
|
![]() ![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Ja mam coś takiego. Mam setAll('akcja', 'metoda'); i dajesz np setAll('forum $_GET['metoda']); i daj ta osobna akcje. Nie rozumiem Cię z tym templatem. Jak osobny? Ja bym do listy kategorii zrobił osobny i wywołał go w templatce. Pewnie nie zrozumiałeś. Powiedzmy mam blok menu. Jak go wywołujesz? No własnie. Wywołaj tą liste tak samo. Mi setAll() zwraca to co zwróciła akcja, a kacja to co widok. Więc mam $menu = setAction('menu') (to jest jak setAll ale zmienia tylko akcję)
Mam nadzieję że coś poradziłem ![]() -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Ja mam coś takiego. Mam setAll('akcja', 'metoda'); i dajesz np setAll('forum $_GET['metoda']); i daj ta osobna akcje. Nie rozumiem Cię z tym templatem. Jak osobny? Ja bym do listy kategorii zrobił osobny i wywołał go w templatce. Pewnie nie zrozumiałeś. Powiedzmy mam blok menu. Jak go wywołujesz? No własnie. Wywołaj tą liste tak samo. Mi setAll() zwraca to co zwróciła akcja, a kacja to co widok. Więc mam $menu = setAction('menu') (to jest jak setAll ale zmienia tylko akcję) Mam nadzieję że coś poradziłem ![]() Niebardzo poradziles, ja moze poradze. Zanim przycisniesz "wyslij" przeczytaj swojego posta dwa razy, sformatuj go jakos, i zastanow sie czy to ma sens, bo ja takowego nie potrafiue odnalezdc tak tam napackales. Jakokolwiek dzieki za dobre checi. -------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
![]() |
|
|
![]() ![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Tak myślałem
![]()
u mnie SetAction poprostu wywołuje akcję Index i metode $list ![]() ![]() $view = (!empty($_GEt['view'])) ? $_GET['view'] : 'defaults'; setAction($view); Mam nadzieję że ten post coś Ci pomoże? Jak nie zrozumiałes może lepiej będzie pogadać przez skypa? ![]() Pozdrawia Bim. -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 24.09.2003 Skąd: Giżycko / Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Tym, czy wyświetlić listę kategorii, czy spis podkategorii, powinien się zajmować - moim zdaniem - sam szablon. Ja obecnie korzystam z OPT i w takim przypadku, jak twój, nie miałbym żadnego problemu. Lista kategorii to jakaśtam tablica przekazana szablonowi. Szablon sprawdza, czy zostały przekazane też zagnieżdżone tablice (które reprezentują podkategorie), i jeśli tak, to je wyświetla.
Podsumowując: akcje odpowiedzialne za pobieranie kategorii z np. bazy tworzą odpowiednią strukturę tablic i przekazują ją do szablonu. Szablon sam odpowiada za wykrycie, czy zostały mu przekazane także podkategorie, i je odpowiednio wyświetla. -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Też dobro, ale ja mam osobną templatke i wywołuje inny model poprostu
![]() -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
@bim2 Nie podoba mi sie trzymanie logiki w bazie danych tak zeby pozniej wyswietlac to uzywajac eval()
@Denver - to rozwiazanie juz mi bardziej pasuje, jednak znow razi mnie tylko to ze w szablonie zaszywam jakas logike ![]() Pozdrawiam -------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
@thornag ja dąłme przykład :| Nie musisz trzymac tego w bazie. Mozna to wywołać wszędzie. A jeszcze jak dasz return to dasz $list = setAll('index', 'list_news'); $tpl->setVar('list', $list); Rozumiesz? Mi to działa ładnie
![]() -------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
@bim2 Zrozumialem Twoje rozwiazanie spokojnie, napisalem dlaczego mi sie nie podoba i dlaczego nie zastosuje, nie muszisz odpowiadac trzy razy piszac to samo
![]() Ja jedna dalej czekam na jakies dalesze sugestie. Chyba wezme przyklad z kolegi Javowca i uruchomie drugi kontroler a moze nawet trzeci i czwarty ![]() ![]() Zalozmy ze mam ten nieszczescliwy FrontController i BlockController (o ile wogole dobrze pojmuje abydwa stwierdzenia ![]() Co myslicie o takim rozwiazaniu ? -------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 132 Pomógł: 0 Dołączył: 24.09.2003 Skąd: Giżycko / Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Nie do końca rozumiem do czego Ci inne kontrolery, i po co chcesz do wyświetlania zwykłych kategorii i podkategorii zaprzęgać sesje. Ja nadal twierdzę, że część logiki można zrzucić na szablony - ale tylko tą najprostszą.
Jeśli znasz wzorzec MVC i chcesz się do niego stosować to pamiętaj, że w kontrolerze nie powinien być generowany żaden kod HTML, w modelu też. Pętla {for} czy {foreach} stosowana w szablonie nie powinna być problematyczna, a niezwykle ułatwia pracę, np. w połączeniu z obiektami. -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Dobra jak popierasz Denvera to trochę rozwine jeog myśl. Ja bym zrobił to tak. Miał 2 szablony spis_kategori.tpl i spis_podkategori.tpl, a w widoku wybierał który to ma być tpl
![]() ![]() Ten post edytował bim2 29.08.2006, 12:20:02 -------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Przeciez nie o szablony tutaj chodzi.
Jednak pokombinuje z wieksza iloscia kontrollerow. W aplikacji Javowej ktora sie tworzy i kumpla kontrolerow jest 80 ![]() ![]() -------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
![]() |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumie Cię. Po co ci kilka kontrollerów? Co ty chcesz osiągnąć? :roll2:
-------------------- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Powiedzmy ze gdzies w lewym panelu strony (przyjmujac uklad logo, lewy panel, czesc glowna) mamy liste jakis kategori. Po kliknieciu w liste ta lista zamienia sie w spis rzeczy w kategori. Efekt tego taki ze cala strona pozostaje bez zmian, zmienia sie tylko ten jeden fragment. Witam, Ja realizuje to w nastepujacy sposob: Mam obiekty zwane Apletami. Aptel w zalozeniu powinien posiadac funkcjoinalnosc zblizona do normalnego kontrolera - powinien miec dostep do danych post, get, session - do wszystkiego. Do modelu takze. W szablonie php, jezeli chce uzyc menu z lewej strony, w odpowiednim miejscu pisze:
Widok wczytuje i uruchamia applet BoczneMenu. Ten z kolei moze sprawdzic, jakie parametry get przekazano do akcji i w zaleznosci od nich, moze wczytac menu takie, albo inne. Uwzam ze rozwiazanie bardzo wygodne. Nie dam sobie reki uciac, ale chyba w symphony tez jest podobne rozwiazanie (przynajmniej ktos na forum tak wczesniej mowil). Adrian. |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
@Prph ja mam podobnie, tyle że wywołuje akcję, np list_news
![]() ![]() Pozdrawiam Bim. -------------------- |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 338 Pomógł: 2 Dołączył: 4.03.2006 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Dokladmie tam to tak zrobione, ze w widoku mam helpery. JEzeli pisze:
widok laduje obiekt helpera Applet. Wykonuje metode execute i przekazuje jej parametry (w tym przypadku nazwe apletu). Helper Applet laduje klase wybranewgo apletu, wykonuje go i zwraca wynik ![]() Adrian. |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Dzieki, jak mowilem osobny kontroller
![]() ![]() Ide do koodu. -------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
![]() |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Nie osobny kotroller. class Controller { function execute() {} function aplet($aplet) { $this->action=aplet; $this->execute(); } } I mówiłem Ci to od początku tyle że nie miałem (ładnego słowa) aplet a setAction(); jak zwał tak zwał ;]
-------------------- |
|
|
![]()
Post
#19
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Może podzieliłem kontroler na FrontController i BlockController i też jest fajny
![]() |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
@bim2 Ty chyba nie dokladnie czytasz to co ja pisze. Zdecydowalem ze chce to podzielic na osobne kontrollery !
@Ociu moglbys jakos przyblizyc jak to zrealizowales ? -------------------- "Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.06.2024 - 14:15 |