![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 62 Pomógł: 0 Dołączył: 3.03.2008 Skąd: Białoruś Ostrzeżenie: (0%) ![]() ![]() |
Znów chcę poruszyć temat wspólnych elementów (bloków) w projektach opartych o ZF. Każdy ma swoje podejście i rozwiązanie do tego tematu i zaczynam się w tym gubić... jestem na etapie zapoznawania się z Zendem więc nie chcę wejść na zła drogę... wszystko ma być profesjonalne i zgodne z koncepcją twórców zend framework.
Większość osób na tym forum zaleca stosowanie w layoutach helpera widoku "action" czyli coś takiego: <div class="box_menu">{$this->action( MenuController ...... )}</div>, co dla mnie jest totalnym nieporozumieniem, moim zdaniem widoki nie mogą wywoływać innych akcji, ponieważ ich funkcją jest tylko sztywne wyświetlanie tego co wygenerował kontroller. Nie wiem może mam złe podejście i myśle trochę po staremu, ale jednak nie lubię bałaganu w aplikacjach. Jak ktoś ma inne zdanie to proszę mnie poprawić i udowodnić dlaczego tak nie jest, będę bardzo wdzięczny ![]() Słabo znam Zenda ale spróbowałem znaleźć rozwiązanie i wyszło mi coś takiego: myproject\application\views\layouts\layout.phtml
myproject\application\controllers\indexController.php
myproject\library\home\controller\plugin\ActionSetup.php
Menu się wyświetla w kazdym kontrollerze i akcji, a definiuje się go tylko jeden raz. Tylko teraz taki problem, jeśli wejde do http://myproject/index/menu oczywiście wyświetla mi się menu dwa razy. I drugie: gdybym chciał w innym kontrollerze zmienić wartości przekazywane do tego menu niestety wyświetlają sie zawsze te z indexController.php. Jak to naprawić, albo obejść? Bedę wdzięczny za każdą radę, zgodną z koncepcją MVC oczywiście ![]() Przepraszam za możliwe błedy, jestem cudzoziemcem. -------------------- webdesign hamburg
werbung hamburg GRAND MEDIA |
|
|
![]()
Post
#2
|
|
Grupa: Zablokowani Postów: 167 Pomógł: 2 Dołączył: 15.02.2004 Ostrzeżenie: (30%) ![]() ![]() |
Cytat Tylko teraz taki problem, jeśli wejde do http://myproject/index/menu oczywiście wyświetla mi się menu dwa razy Lepiej umieścić bloki (komponenty) w osobnym kontrolerze, np. CommonController, NavController czy ComponentController. Teraz masz tylko menu, a potem może dojść sidebar i inne bloki. W metodzie inicjalizującej kontroler akcji można zastosować mały trick, by kontroler ten nie był dostępny w poziomu URL-a:
Cytat I drugie: gdybym chciał w innym kontrollerze zmienić wartości przekazywane do tego menu niestety wyświetlają sie zawsze te z indexController.php. Jak to naprawić, albo obejść? Ustaw sobie łańcuszek akcji w metodzie inicjalizującej dany kontroler zamiast w pluginie. Zawsze możesz przekazać indywidualne parametry dla danego modułu (kontrolera akcji):
Poważną wadą jest ponowne zrenedrowanie ustawionych akcji w przypadku użycia metody narzędziowej $this->_forward(). Można to rozwiązać w mało elegancki sposób jak ten:
Jeżeli wpadniesz na lepsze rozwiązanie to zademonstruj proszę w tym topicu ![]() Można to rozwiązać też za pomocą wzorca "Two Step View". Tutaj mały poradnik. Zerknij na załączony tam Webinar. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 21.07.2025 - 06:58 |