![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 1 Dołączył: 13.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
robiac portal skladajacy sie z roznych modułow: core ( odpowiedzialny za wyswietlenie strony glownej itp ) + galeria + newsy + artykuly itp.... ;]
lepiej jest poslugiwac sie na sztywno metodami statycznymi do pobierania blokow np: strona glowna sklada sie menu + blok ostatnich 10 newsow + blok ostatnich 10 artow i teraz class IndexContoller extends Zend_Controller_Action function indexAction() { $this->view->blockNews = BlockNews::showLastNews( 10 ); $this->view->blockArticles = ArticlesNews::showLastArticles( 10 ); echo $this->view->render('IndexPage.tpl'); } } czy lepiej jest w wyswietlic samo class IndexContoller extends Zend_Controller_Action function indexAction() { echo $this->view->render('IndexPage.tpl'); } } a w widoku za pomoce plugina $this->_action(....) odwolywac sie to wybranych kontrolerow / akcji ![]() |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Moim zdaniem lepiej korzystać z pluginu w widoku. Dzięki temu poszczególne akcje stają się bardziej uniwersalne (reusable).
W pierwszym przypadku za bardzo mieszasz logikę widoku z kontrolerem - wyobraź sobie ile akcji byś musiał zmieniać gdybyś w ten sposób dołączał np. menu strony? Od tego jest widok i niech tak zostanie. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 1 Dołączył: 13.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
czyli wychodzi ze najlepsza metoda na tego typu serwisu jest cos takiego
![]() Przykład: -IndexController -NowosiController -GaleriaController -ArtykulController (podział na moduły itp odpuscilem - chodzi o sam schemat ) IndexController odpowiedzialny jest za pierwsza strone ---------------------------------------------------------------- | $this->partial('header.tpl'); | |--------------------------------------------------------------- | | | | | | | $this->action( odwolanie do | $this->action( | | NewsController....) | Menu.... | |-------------------------------------------- | | | | | $this->action(odwoloanie do | | | ArtykulController....) | | | | | | | | ---------------------------------------------------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie, dodatkowo tą część z headerem i menu (+ np. footer) przeniósłbym do layoutu.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 235 Pomógł: 17 Dołączył: 18.07.2007 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
masz przecież modele...
ja bym to zrobił tak
i opracowujesz to sobie ładnie w widoku ;-) do tego sugeruję configi w których będziesz przechowywał liczbę pobieranych newsów; drugą dobrą opcją jest plugin + config, aczkolwiek cały render sugeruję już w widoku |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 1 Dołączył: 13.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
tylko chciałbym mieć wieksza 'elastycznosc' aplikacji - tj. na stronie glownej chce miec od box z promocyjnymi towarami to w widoku wstawiam sobie
<div class="box_promocje">{$this->action( PromocjeController ...... )}</div> ![]() więc jakoś to rozwiązanie z pluginami bardziej do mnie przemawia ![]() a header + footer - faktycznie do Layout ;] |
|
|
![]()
Post
#7
|
|
![]() Administrator wortalu Grupa: Przyjaciele php.pl Postów: 960 Pomógł: 39 Dołączył: 21.10.2003 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście że najlepiej korzystać z helpera widoku 'action'. Powstał on właśnie do tego żeby można było robić opisane przez Ciebie widgety (bloki). Opisany sposób przez ~kosmowariata jest bezsensu bo w takim rozwiązaniu trzeba by przekazywać do widoku w każdej akcji te wszystkie bloki. To już lepiej by było zastosować actionstack i wykonywać równocześnie akcje odpowiedzialne za bloki i przekazywać wyniki do layoutu.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 1 Dołączył: 13.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
Sabistik: powiedz mi jeszcze tylko jak najrozsadniej zablokowac uzytkownikowi dostanie sie do funkcji odpowiedzialnej za wyswietlanie: box z logowanie ktory bedzie umieszczony layout... bo majac np:
class UzytkownikController { public function boksLogowaniaAction() { //... tu cala logika zwiazana ze sprawdzanie czy user logniety czy nie... //.. tu views/script zostanie 'zrenderowany' ![]() $this->_helper->viewRenderer->setResponseSegment('boksLogowanie'); } } strona glowna portalu: class IndexController { public function indexAction() { $this->_helper->layout()->setLayout('indexPage.phtml'); } } natomiast glowny layout: <html> <head><title>......</title></head> <body> superrrrr portal ![]() <?php $this->action('boksLogowania', 'Uzytkownik', null, array() ); ?> </body> </html> ktos może dostac sie do funkcji opdowiedzialnej za wyswietlenie boksa z logowaniem przez www.portal.pl/uzytkownik/boksLogowanie ![]() jedyne co mi przychodzi do glowy to doszukac sie jakiejs metody a obiekcie request ;] a przy okazji dobrze zrozumialem 'idee' podziału na komponenty ? ;] |
|
|
![]()
Post
#9
|
|
![]() Administrator wortalu Grupa: Przyjaciele php.pl Postów: 960 Pomógł: 39 Dołączył: 21.10.2003 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 1 Dołączył: 13.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
oki
![]() |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Dlaczego miałoby nie być zgodne? Nadal zachowana jest separacja wszystkich 3-ech płaszczyzn. A jednocześnie jest to wygodne.
Nie bądź ślepo zapatrzony we wzorce projektowe - one są po to by ułatwić programiście życie - tzn. jeżeli coś nie jest w 100-tu procentach zgodne z czymś, nie oznacza, że się nie nadaje. Zwracaj uwagę raczej na to czy nie nabruździsz sobie w kodzie nowym rozwiązaniem. Dodatkowo, nie ma nigdzie jasno opisanych wzorców, a raczej wzorcowych Ich implementacji. Wiele rzeczy można zrobić na milion sposobów, a i tak będzie to samo. Pozdrawiam, LBO Ten post edytował LBO 2.03.2008, 18:17:08 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 1 Dołączył: 13.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
oki
![]() ![]() |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Pracując na Agavi nauczyłem się, że najlepiej większość rzeczy opierać o kontrolery/akcje... jest to wygodne
![]() Np, robisz kontroler odpowiedzialny za logowanie i korzystając z narzędzi dostępnych we frameworku ustalasz czy wyświetlić formularz, czy zwykłe "Witaj użytkowniku taki a taki". Wstawiasz to w szablonie i cała reszta z głowy. Tak samo menu - tworze cały kontroler odpowiedzialny za dodawanie, odejmowanie czy automatyczne pobieranie linków (z cała otoczką administracyjną) a layoucie wstawiam akcje to menu wyświetlającą. Tylko faktycznie, Zend powinien zrobić jakiś mechanizm ukrywający kontrolery/akcje przed Dispatcherem - bo rozwiazania które tu widziałem nie wydją mi się eleganckie. Ten post edytował LBO 2.03.2008, 22:29:12 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 235 Pomógł: 17 Dołączył: 18.07.2007 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
@Sabistik - popraw mnie jeśli się mylę, ale helpera tego nie ma w ostatniej stabilnej wersji ZF
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 1 Dołączył: 13.01.2006 Ostrzeżenie: (0%) ![]() ![]() |
najnowsza stabilna wersja została pozbawiona helpera action / komponentu : Zend_Layout ... ale daj gora miesiac jak 1.5 bedzie stable ;]
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 62 Pomógł: 0 Dołączył: 3.03.2008 Skąd: Białoruś Ostrzeżenie: (0%) ![]() ![]() |
Mam pytanie, jak w metodze action przekazuje sie zmienne?
-------------------- webdesign hamburg
werbung hamburg GRAND MEDIA |
|
|
![]()
Post
#17
|
|
![]() Administrator wortalu Grupa: Przyjaciele php.pl Postów: 960 Pomógł: 39 Dołączył: 21.10.2003 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 62 Pomógł: 0 Dołączył: 3.03.2008 Skąd: Białoruś Ostrzeżenie: (0%) ![]() ![]() |
ale mi chodzi o to:
<?= $this->action('latestnews', 'index', null, array('count' => 10, 'idNode' => 149)); ?> czy takie cos jest dobrze? I jak pozniej taka zmienna pobrac w konkretnej metodzie? Ten post edytował coolin1986 29.04.2008, 09:50:48 -------------------- webdesign hamburg
werbung hamburg GRAND MEDIA |
|
|
![]()
Post
#19
|
|
![]() Administrator wortalu Grupa: Przyjaciele php.pl Postów: 960 Pomógł: 39 Dołączył: 21.10.2003 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
No przecież cały czas o tym rozmawiamy. Do parametrów odwołujesz się jak przy normalnym requestcie.
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 62 Pomógł: 0 Dołączył: 3.03.2008 Skąd: Białoruś Ostrzeżenie: (0%) ![]() ![]() |
Ok, dziala
![]() -------------------- webdesign hamburg
werbung hamburg GRAND MEDIA |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 04:47 |