Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Przepływ danych pomiędzy modułami / kotrolerami
Forum PHP.pl > Forum > PHP > Frameworki
pawella
Witajcie.

Zastanawiam się nad tym czy istnieje w ZF jakaś możliwość realizowania przepływu danych w obu kierunkach pomiędzy kontrolerami.

Chodzi mi o możliwość wykorzystania funkcjonalności istniejących modułów aplikacji.

Prosty przykład:
a) moduł mailing - zarządza lista mailngowymi, treściami mail etc, wysyła pocztę itp.
cool.gif moduł users - którego kontrolery pozwalają na zarządzanie użytkownikami.

Teraz pytanie: jak ułatwić sobie życie i wykorzystać funkcjonalność modułu mailing np w procesie odzyskiwania hasła przez użytkownika.

Czyli przykładowy request na moduł użytkownika /users/account/password-restore powinien wysłać email który pozwoli na odzyskanie hasła, po co tworzyć nową obsługę mailngu skoro ona już zaimplementowana w module mailing wystarczyło by pobrać z niego odpowiednią treść wiadomości, instancję transportera i wysłać wiadomość, po co powielać kod w module users.

Problem jednak polega na tym, że nie bardzo jest możliwość odebrania danych przetworzonych przez kontroler z pominięciem warstwy widoku.

Majcie jakieś doświadczenie lub pomysły na rozwiązanie tego problemu?

Pozdrawiam pawella.
nospor
źle myślisz.. znaczy po częsci dobrze, ze nie ma co powielac kodu, ale wykonanie tego to juz masz złe

Do wysyłania maila ma służyć klasa wysyłająca mail a nie kontroller. Kontroller jedynie ma wypełnić tę klasę danymi. Nie ważne czy to będzie kontroller w module mailing czy users.
LBO
Tak jak pisze nospor. Moduł mailingu udostępnią jakiś interfejs do wysyłania maili, a kontrolery modułu służą już do wykonywania konkretnych działań przy jego użyciu.

Teoretycznie ładując moduł mailingu powinieneś być w stanie użyć interfejsu, który udostępnią np. załadować skonfigurowany przez ten moduł Zend_Mail do rejestru. Potem będziesz w stanie go użyć w innych częściach systemu; innych modułach.
pawella
Zgodzę się z Wami ale mam dwa ale smile.gif

Po pierwsze całą logikę musimy zapakować do modelu, czyli rzeczy za które odpowiadać powinien raczej kontroler w module mailing takie jako pobranie odpowiedniego wzorca treści wiadomości, np w wymaganym języku, podstawienie właściwych danych, dołączenie odpowiednich załączników, muszę zapakować w model, lub dublować akcje w kontrolerze modelu users, czego właśnie chcę uniknąć.

Druga rzecz, to po co pakować do rejestru obiekty które wykorzystywane są sporadycznie, skoro mogą być inicjowane poprzez kontroler właściwego modułu, oczywiście zawsze możemy zrobić singleton a więc więc dalej rozszerzamy logikę modelu. Pozostaje jeszcze problem z związany z tym, że jeżeli chcemy użyć modelu z różnych modułów, z pominięciem requestów do kontrolerów, należało by do Zend_Loader_Autoloader dodać wszystkie resource z danymi modelami, lub ładować klasy ręcznie. Odwołując się poprzez Dispather można utworzyć odpowiedni plugin który doda Autoloadera tylko resources modułu którego rządanie dotyczy. Wówczas autoloader będzie miał mnie przestrzeni do przeszukania, tym samym wydajność całej aplikacji będzie lepsza.


Pozdrawiam.
seth-kk
Zawsze mozesz dziedziczyc po Zend_Mail dodac wlasna logike trzymac to w libie i jedynie dodac namespace do autoloadera
LBO
Cytat(pawella @ 25.09.2009, 18:00:57 ) *
Druga rzecz, to po co pakować do rejestru obiekty które wykorzystywane są sporadycznie, skoro mogą być inicjowane poprzez kontroler właściwego modułu, oczywiście zawsze możemy zrobić singleton a więc więc dalej rozszerzamy logikę modelu.


Z tym rejestrem to był tylko pomysł - osobiście tego nie lubię, podobnie jak i singletonów.

Spróbuj to narzędzie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.