![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 1.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Raczkuje z ZF i bardzo prosze was o pomoc bo juz glupieje. Uzywam najnowszej wersji ZF.
Chce zrobic sobie szablon 3 kolumnowy + header + stopka. Uzylem do tego zend_layout i stworzylem sobie szkielet strony. Teraz w zaleznosci od akcji chce wyswietlac w poszczegolnych elementach layoutu inna zawartosc i tak np na stronie index w indexControlers chce sobie ustawic by w 'module srodkowym' layoutu miec tresc powitania/'prawej kolumnie' guzik do zalogowania / w 'lewej kolumnie' nie wiem cos innego na stronie login.html ( loginControlers) chce miec juz cos innego czyli zamiast w lewej kolumnie logowania chce miec np liste ostatnio zalogowanych uzytkownikow w srodkowej czesci natomiast formularz logowania w prawej jeszcze cos innego czyli w zaleznosci od strony do poszczegolnych elementow layoutu chce wrzucac calkowicie inna nie powiazana ze soba tresc cos a'la if (index) include_template_a / else include_template_b w jaki sposob to oprogramowac ? ja juz sie poddaje i nie za bardzo wiem. probowalem tak: w layoucie w odpowiednim katalogu application/views/scripts/index/index.phtml oraz w application/views/scripts/index/login.phtml mam taki sam kod layoutu (tu juz mi cos nie pasuje bo n roznych stron w serwisie i mam tworzyc n takich samych layoutow??) w odpowiednich miejscach htmla printuje <?php echo $this->layout()->lewaK; ?> <?php echo $this->layout()->srodekK; ?> <?php echo $this->layout()->prawaK; ?> nastepnie w indexControlers $this->_helper->layout()-> lewaK= = $this->render('guzikZaloguj'); $this->_helper->layout()-> srodekK= $this->render('powitanie'); $this->_helper->layout()-> prawaK= $this->render('cos'); a w loginControlers $this->_helper->layout()-> lewaK= = $this->render('ostatniZalogowani'); $this->_helper->layout()-> srodekK= $this->render('formularzLogowania'); $this->_helper->layout()-> prawaK= $this->render('cos2'); guzikZaloguj.phtml powitanie.phtml etc... mam w katalogu /application/layouts/scripts czy dobrze kombinuje ? co robie zle ? - bo niestety nie osiagam zamierzonego efektu. W dodatku nie dostaje zadnych warningow errorow noticow - nic co by sugerowalo ze cos robie zle :| przypisanie do $this->_helper->layout()-> lewaK = "asdada" dziala i wyswietla na stronie tekst - natomiast chcialbym zeby wyswietlalo zawartosc 'template'a' z gory dzieki za poswiecony czas i pomoc Ten post edytował matchor 17.10.2009, 23:02:23 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 444 Pomógł: 79 Dołączył: 26.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
to twoje application/views/scripts/index/index.phtml to widok a nie layout
ten efekt mozna osiagnac na wiele sposobow chyba najprostszy to switch/if + action view helper czyli cos w stylu ale rownie dobrze moznaby action helper zastapic partialami lub sterowanie przesunac do controllerow lub helperow jesli zawartosc bocznych elementow nie powina trafiac do glownego contentu |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 7 Dołączył: 9.10.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ja mam to tak:
Mój layout.phtml
Ale mozna to zrobić też tak:
Do zmiennych $this->partialUp oraz $this->partialDown dodajesz strony które chcesz dołączyć. Pisałem z ręki więć nie dam głowy że to działa (IMG:style_emoticons/default/winksmiley.jpg) Ten post edytował Sajrox 18.10.2009, 19:51:59 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 1.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
no dobra ale co w takim razie podaje do np <?= $this->partial('right.phtml') ?> gdzie ustawiam co tam ma byc i jak wygladac ?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 444 Pomógł: 79 Dołączył: 26.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 7 Dołączył: 9.10.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
tam gdzie masz swój plik layout.phtml tworzysz right.phtml i już
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 1.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
i co i w right.phtml mam miec
switch(akcja) case akcja1: case akcja2 case akcja.. n i wszystkie mozliwe widoki jakie moze przyjac prawa kolumna layoutu ? bardziej myslalem o rozwiazaniu ze w kontrolerze ustalam jaki phtml ma sie znalezc w right i raz bym robil right = right.phtml a raz right=sidebar.phtml a innym razem right=xyz.phtml Ten post edytował matchor 19.10.2009, 18:54:52 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 7 Dołączył: 9.10.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ja robie to tak. W layout.phtm przy pomocy:
ładuję stały kod html który siuę nie zmienia Jednak do dynamicznego generowania zawartości bocznych menu używam:
Generalnie najpierw w kontrolerze globalnym tworzę tablicę np:
i w Layout.phtml
Próbuje przedstawić sam sens działania, jednak powinieneś to sam już bardziej rozbudować, ale jeśli załapałeś o co chozi to bez problemu sobie z tym poradzisz (IMG:style_emoticons/default/winksmiley.jpg) Pamiętaj aby w tych akcjach które wyświetlasz przez $this->action() wyłączyć layput:
|
|
|
![]() ![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 46 Pomógł: 0 Dołączył: 1.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
WIELKIE DZIĘKI (IMG:style_emoticons/default/exclamation.gif) To rozwiązanie mi się podoba.
Ja wczoraj metodą prób i błędów zrobiłem sobie to na tej zasadzie: w layoutcie mam <?php echo $this->leftColumn;?> natomiast w controlerze robie $this->view->leftColumn = $this->view->render('pasekLewyLogowanie.phtml'); nawet sie sprawdza niemniej twoje rozwiazanie bardziej do mnie przemawia (IMG:style_emoticons/default/smile.gif) Jeszcze raz dzieki (WSZYSTKIM (IMG:style_emoticons/default/winksmiley.jpg) ) Ten post edytował matchor 20.10.2009, 08:29:07 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 21:55 |