![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 2 Dołączył: 12.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Tworzę sobie mały projekt w OOP i spotkałem się z problemem, którego nie potrafię logicznie rozwiązać.
Schemat systemy jest najstępujący: 1. Odpalam Router 2. przekazuje go do dispatchera 3. Dispatcher ładuje odpowiedni kontroler i wrzuca do niego router. 4. W kontrolerze za pomocą klasy View tworzę widok (podział www na kilka szablonów) 5. Dispatcher renderuje i wysyła całość. --- Problemem jest dostanie się z widoku do routera. Po co? Mam przykładowo menu i chciałbym, aby menu prowadzące do aktualnie otwartego działu dostało atrybut klasy "active". Z poziomu widoku chciałbym odczytać $router->getModule i porownać go. Jak rozwiązalibyście taki problem? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zwracasz widok z kontrolera?
edit: Tak, na logikę, obiekt Request powinien trzymać przetłumaczone info z Routera tj. moduł, akcja, etc. Ten post edytował LBO 18.01.2010, 13:20:39 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 58 Pomógł: 2 Dołączył: 12.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Zwracasz widok z kontrolera? Tak, ale akurat menu jest wczytywane w widoku main.html jako <?=$this->include('menu');?>, który tworzy nowy widok i wszczepia go. W tym przypadku menu znajduje się u góry strony i jest wczytywane przez main.html, ale może się zdarzyć tak, że menu będzie w innym miejscu i będzie wszczepiane w pliku footer.html. Dodatkowo na niektórych podstronach będzie submenu, które będzie musiało czytać z $router->action i też chciałbym tam dorzucić klasę "active" do hovera. Chciałbym aby kod był jak najoptymalniejszy, ale uniwesalny w przypadku zmiany widoku (mam system templatów). Cytat Tak, na logikę, obiekt Request powinien trzymać przetłumaczone info z Routera tj. moduł, akcja, etc. Ja to zrobiłem bezpośrednio w routerze, aby ograniczyć ilość klas w projekcie. Dodam tylko, że myślałem nad takimi rozwiązaniami: 1. zastosowanie Jquery do podmiany klas (nie będę musiał wtedy męczyć frameworka) 2. utworzenie nowej klasy do budowy menu 3. stały dostęp widoku do klasy request/router Nie wiem co będzie najlepsze... Ten post edytował zaksmok 18.01.2010, 13:36:45 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
wszystko sprowadza się do przekazania Routera do widoku, a tego dalej do szablonu. Masz 2 wyjścia (no dobra, nie tylko 2 ale te będą najłatwiejsze do uzyskania):
1. Dodanie routera do widoku w dispatcherze:
2. Tworzysz fabrykę widoku bezpośrednio w głównej klasie kontrolera
Ten post edytował LBO 18.01.2010, 14:00:03 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 31.07.2025 - 07:44 |