![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Witam, pisałem ostatnio o zmianach widoków itd, powiedziano mi, że źle robię, później wprowadziłem poprawkę do oceny: http://dl.dropbox.com/u/21239599/mvc3.rar czy już jest ok.
Dalej podpowiedziano mi, że trochę, źle robię z widokami i dobrze byłoby zastosować template, ale teraz pytanie jak to ma działać ? Na tą chwilę jak można zauważyć w paczce z mojego dropboxa w index.php mam ładowanie kontrolera, który ładuje mi dalej widoki, w widokach mam wszystko wyświetlane co potrzebuję, ale jaki sens jest powtarzania 15 razy kodu związanego z header/footer skoro mogę zrobić chyba jakiś szablon i ładować za pomocą MVC dane/treści do tego szablonu. Tak jak wspomniałem, wszystko zaczyna się w index.php index > kontroler > model > widok, nie ma tutaj mowy o szablonie zrobiłem sobie do tego plik config.php, który zawiera
jest on includowany w index.php, myślę, że to tutaj powinno odbyć się załadowanie konkretnego szablonu... ale co dalej ? teraz w index mam ładowanie kontrolera, a on chyba musi być załadowany w danym template ? Jak w template dostać się do zmiennych z danego widoku skoro początkowo one są teraz ładowane w index ? Struktura katalogów: - controllers - models - templates (katalog odpowiedzialny za templates, które chcę ładować) - views - config.php - index.php W sumie to prosiłbym o jakieś naprowadzenie na to jak korzystać z takich templates. Z góry dziękuję. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 98 Pomógł: 33 Dołączył: 10.05.2011 Skąd: Krak Ostrzeżenie: (0%) ![]() ![]() |
Przeczytałem Twój post, ale kod mógłbyś wstawić w jakieś lepiej dostępne miejsce.
Szablonu nie ładuje się w index.php, kontrolera nie ładuje się w szablonie. Pytasz jak przekazać dane do szablonu. Najlepiej napisać do tego odpowiednią klasę. Np. taką:
Patrz na metodę render. Jeśli ładujesz szablon w metodzie widzi on wszystkie zmienne jakie są dostępne w tej metodzie. Możesz odnosić się do danych przez $this. Dlatego zadziała coś takiego(kod layout.phtml):
Powiedzmy że masz też szablon news-list.phtml:
Coś takiego mógłbyś gdzieś w kontrolerze:
Metoda __toString w klasie Template pozwala jej instancje traktować jak stringi, prze co możliwe jest wyświetlanie szablonów wewnątrz inny przez echo. Mógłbyś też wybrać inną drogę i stworzyć jedną instancję Template. Dalej w szablonach(nie klasie) dodawać inne szablony za pomocą require(). Ale wtedy wszystkie szablony miałyby wspólne dane, co według mnie spowodowałoby niepotrzebny bałagan. Mógłbyś nawet załadować plik szablonu w akcji kontrolera, działałoby, ale to dopiero byłby sajgon. To tylko takie poglądowe rozwiązanie i musisz jeszcze sporo pokombinować i poczytać. Np. tworzenie i wyświetlanie layouta nie powinno się odbywać w akcji kontrolera. Ten post edytował droslaw 28.06.2012, 17:30:24 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
1) Czemu dropbox jest zły ? Skoro z mojego konta idą tylko te dane, które udostępnię ?
2) Czemu kontrolera nie tworzyć w index ? Co z tym nie tak ? Skoro przecież to właśnie w index wszystko się zaczyna 3) Czyli template w takim przypadku jakim opisałem powinien być bardziej klasą php niżeli samym plikiem html z wstawkami php w odpowiednim miejscu ? Czyli PHP (Klasa) + HTML (Wstawki) Muszę nad tym pomyśleć, znasz jakieś przykłady z prawidłowym (wg Ciebie) wykorzystaniem MVC i template ? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 98 Pomógł: 33 Dołączył: 10.05.2011 Skąd: Krak Ostrzeżenie: (0%) ![]() ![]() |
1) Zły jest w tym wypadku rar. Wolałbym od razu zobaczyć źródła.
2) Ja pisałem że nie można ładować szablonu w index.php. Kontroler(w najprostszym przypadku) mógłby być. Ja tworzę odpowiednie kontrolery w Dyspozytorze. 3) Nie pisałem że szablon to klasa, pisałem że to może być plik z wstawkami php. Ale tem plik powinien być ładowany przez klasę, która udostępni mu dane. Dodatkowo taka klasa powinna mieś metodę __toString, przez co jej instancja może być traktowana jak napis i dzięki temu łatwo dołączana wewnątrz innych szablonów. Najlepiej przeglądać kod różnych frameworków. Czytać jakieś artykuły na ten temat. W naszym języku raczej tego wiele nie będzie. Ten post edytował droslaw 28.06.2012, 17:47:58 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Masz jakieś przykłady z takim czymś ?
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 98 Pomógł: 33 Dołączył: 10.05.2011 Skąd: Krak Ostrzeżenie: (0%) ![]() ![]() |
Poszukaj w google pod hasłem mvc tutorial.
Bardzo krótko i w prosty sposób[pl] Też po polsku, autor zajmuje m.inn. Open Power Template Tu jest trochę więcej informacji [en] Poszukaj więcej porównuj, pisz i poprawiaj swój kod. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 20:33 |