![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 1 Dołączył: 11.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Stworzyłem Layout strony z taką przykładową sekcją "body" Sama aplikacja posiada standardowo domyślny idexController w którym będą akcje odpowiadające za generowanie głównej treści strony, oraz dodatkowo utworzyłem usersController w którym będą akcje odpowiadające za logowanie wylogowywanie rejestracje itp.... i problem teraz mam taki skąd wziąć "drugi" $this->layout()->content; który bym mógł wrzucił np. do <div id="header"> i który by mi dynamicznie uzupełniał widok tego diva w zależności od "stanu" aplikacji czyli wyświetlał by formularz do logowania a po zalogowaniu np. "jesteś zalogowany jako Janek" - zgodnie z widokami wywoływanymi z usersController. Wy-googlowałem i przewałkowałem kilka sposobów jedne działają, inne nie działają, są proste sposoby, są też bardziej skomplikowane A moje pytanie brzmi jak to zrobić "po bożemu". Jestem nowicjuszem i nie bardzo rozumie niektóre metody - modyfikowanie iluś tam plików dodawanie pluginów rejestrowanie nowych hellperów, dodawanie wraperów itd... poco to wszystko kiedy mi jest po-prostu potrzebny kolejny "$this->layout()->content" (IMG:style_emoticons/default/questionmark.gif) ? mam nadzieje że w miarę jasno przekazałem o co mi chodzi (IMG:style_emoticons/default/biggrin.gif) Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 ![]() |
Sposobów jest kilka.
1. W kontrolerze zapisujesz do zmiennej layoutu to, co chcesz wyświetlić, a w samym layoucie wstawiasz echo $this->layout()->twoja_zmienna. 2. Korzystasz z metody render (Zend_View) i renderujesz skrypt widoku, np. echo $this->render('header.phtml') 3. Piszesz helper widoku i wywołujesz go w layoucie - echo $this->twojHelperWidoku() W Twoim przypadku najlepszym rozwiązaniem będzie helper widoku, ponieważ możesz w nim sprawdzić, czy użytkownik jest zalogowany i wyświetlić odpowiedni skrypt widoku. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 371 Pomógł: 30 Dołączył: 14.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dorzucę tu swoje zdanie, sam jestem początkującym w zendzie, więc też szukałem sposobów na Zend_Layout. Rozwiązanie udzielił użytkownik z tego forum:) Wygląda to tak że masz:
By stworzyć $this->layout()->footer; powinieneś utworzyć kontroler np. footer i akcję footer. Dodatkowo w layoucie powinieneś dodać:
więc layout dla tego przykładu wygląda:
Oczywiście nazwa kontrolera może być inna. To jest jak sądzę sposób 1., który napisał batman, nie wiem w jakim stopniu jest z nim poprawny, w każdym razie działa. oczywiście będziesz miał też plik footer.phtml w views/scripts/footer i tam należy dać zawartość stopki. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 1 Dołączył: 11.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dorzucę tu swoje zdanie, sam jestem początkującym w zendzie, więc też szukałem sposobów na Zend_Layout. Rozwiązanie udzielił użytkownik z tego forum:) Wygląda to tak że masz:
By stworzyć $this->layout()->footer; powinieneś utworzyć kontroler np. footer i akcję footer. Dodatkowo w layoucie powinieneś dodać:
więc layout dla tego przykładu wygląda:
Oczywiście nazwa kontrolera może być inna. To jest jak sądzę sposób 1., który napisał batman, nie wiem w jakim stopniu jest z nim poprawny, w każdym razie działa. oczywiście będziesz miał też plik footer.phtml w views/scripts/footer i tam należy dać zawartość stopki. No właśnie też to testowałem i nie działa to tak jak bym oczekiwał dodanie "na sztywno" echo $this->layout()->footer; powoduje że zawsze będzie widoczna zawartość widoku footer.phtml w którym jest formularz albo button zaloguj itd... mój kontroler składa się z trzech akcji i trzech widoków w zależności od stanu ma wyglądać inaczej np.użytkownik jest nie zalogowany to z automatu wyświetla się "zaloguj" oraz formularz, po zalogowaniu znika zaloguj (bo poco ma być widoczne) i pojawia się "jesteś zalogowany jako Stefan" i button wyloguj... Ale z tego co już przejrzałem nie da się tego osiągnąć w tak prosty sposób - a tak właśnie działa helper $this->layout()->content; gdzie zawsze dostajemy "aktualny" widok po wykonaniu akcji wystarczy go wkleić do diva Ten post edytował phpmack 31.10.2011, 20:29:47 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 253 Pomógł: 29 Dołączył: 18.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dopisując się do sposobów @batmana:
4. Zrób kilka layout-ów i podmieniaj w init kontrolera 5. Napisałeś że jesteś początkujący więc ten punkt może być "Rocket science" :-p zostawić "footer" w layout i w razie potrzeby dodawać na actionstack akcje z placehoderem "footer". |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 17:52 |