Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF] Powtarzające się elementy "moduły" aplikacji
MarcinTryka
post
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 31.03.2007

Ostrzeżenie: (0%)
-----


Witam

Mam problem z pisaniem wiekszych aplikacji w ZF. Np. Logowanie. Wszedzie w tutorialach, poradnikachh jest to rozwiazane tak: budujemy
LogujController
- ZalogujAction
- WylogujAction
- FormularzAction
- HelloAction

I wchodze zeby sie zalogowac na strone www.adresdtrony.pl/loguj/formularz/

... tylko kto tak robi. Z reguły na jednej stronie w wiekszych serwisach jest cała masa róznych rzeczy, a nie jedna strona do jednego.
Dajmy na to że mam strone.

Po lewej mam boxy z róznymi rzeczami (menu, formularz logowania/informacje o zalogowanym, ostatnie wiadomosci z forum itp ...).
Po prawe mam to co zależy od wybranej strony, czyli np. Forum, Strona główna, Aktualności, Ogłoszenia...

Czyli mam takie kontrollery jak ForumController. AktualnosciController ...

Jak to zintegrować? Żeby się wszystko ładnie razem wyświetlało i żebym nie musiał w 10 kontrolerach powtarzać tego samego kodu dotyczącego logowania.

A już ideałem by było żebym mógł np. w bazie zapisać kolejność takich boxów w menu, każdemu przyporządkować jakis moduł, trzymać to w bazie danych, a przy uruchomieniu aplikacji tylko odczytywać z bazy kolejne moduły i dołączać odpowiednie kawałki kodu. Jesli chodzi o widok, to sobie poradze, nie wiem natomiast jak w jednym kontrolerze uzyć drugiego? . W tradycyjnym programowaniu to banalne, a ZF (lub raczej moja niewiedza) mnie tu ogranicza.

Chcę budować aplikacje (wortal) który będę z cały czas rozbudowywał. Takie "modułowe" podejście bardzo ułatwiłoby mi dodawanie nowych funkcji. oraz zarządzaniem istniejącymi

Proszę o radę lub jakieś linki.
Go to the top of the page
+Quote Post
LBO
post
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


W ZF stworzyłem podwaliny pod prawdziwą aplikację - czyli obsługę błędów, zarządzanie plikami konfiguracji, połączenie z bazą danych, logowanie i administrację. Teraz wszystko się sprowadza do developerki modułów. W pewnym momencie natknąłem się na Twój problem - tak naprawdę to natychmiast, gdyż miałem doświadczenie np. Z CakePHP - i rozwiązałem go za pomocą helperów (lub wg nieszczęsnego tłumaczenia manuala - pomocników) widoku. Dodatkowo posiadam autorski sposób dodawania layoutów jako plugin do front controllera (kontrolera frontowego, bleh). Pluginy takie, to zdecydowanie najbardziej niedoceniona przez społeczność i twórców ZF część frameworka.
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #3





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




NIe jestem pewien, czy nie palnę głupoty, bo ZF znam tylko z opisu, kodu który czytałem i dokumantacji. W ZF jak i w innych tego typu frameworkach (CI, Cake) - możesz to zrobić tylko siłowo - czyli dołaczyć widok ( tzw partial) do widoku głównego bezpośrednio w jego kodzie. Niestety nie istnieje żaden mechanizm zarządzania logiką tych dołączeń (np. wykonywanie kodu akcji).

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
eai
post
Post #4





Grupa: Zarejestrowani
Postów: 367
Pomógł: 10
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----


Widać mało znacie ZF.

Oprócz widoków możemy tworzyć layouty w których umieszczasz swoje boxy, i zamiast po 10 razy przepisywać kod, tworzysz sobie helper który może Ci generować zawartość innego kontrollera, w helperze poprostu dajesz dispatch, określasz trasę parametry a na koniec getBody, dzięki temu łączysz się z jakim chcesz kontrolerem i z jaką chcesz akcją. Przyczym loginka aplikacji jest zachowana czyli MVC. Dzięki ustalonej trasie routera i odpowiednich parametrów generują Ci się odpowiednie boxy, czyli np. jeśli jesteś zalogowany wyświetli Ci się panel konta, a jeśli nie to box z formularzem logowania.
Chwilowo Zend_Layout jest jeszcze w incubator ale ja go używam i narazie nie ma żadnych problemów z layoutami.

Warunki parametrów sprawdzasz sobie w kontrolerze, a helper będzie Ci służył jedynie do łączenia się z innym kontrolerami i pobieraniem odpowiedzi.

ZF to naprawdę świetny framework, warto mu się głębiej przyjżeć.

Zacznij od tego http://framework.zend.com/apidoc/core/.

Jeśli nadal nie będziesz wiedział co i jak, to daj znać na priv a wstawie na bloga artykuł o tym.
Go to the top of the page
+Quote Post
LBO
post
Post #5





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


@eai kto się nie zna, ten się nie zna tongue.gif Jeżeli nie zauważyłeś napisałem o wszystkim o czym Ty wspomniałeś, nie wiem na jakiej podstawie wątpisz w moją wiedzę? Z ZF "znam się" praktycznie od początku - bodajże 0.1.1.

Pozdrawiam, LBO.


P.S. Zend_Layout w inkubatorze? No chyba nie każesz nikomu tego używać?
Go to the top of the page
+Quote Post
eai
post
Post #6





Grupa: Zarejestrowani
Postów: 367
Pomógł: 10
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----


@LBO sorki bo pominąłem twój wątek. faktycznie to jest to samo smile.gif
/sorka i bez urazy smile.gif
Go to the top of the page
+Quote Post
LBO
post
Post #7





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Co do Zend_Layout, rozumiem, że zdobyłeś gdzieś kod? Przejrzałem pobieżnie Nabble i wiki, ale nie znalazłem.

Podzieliłbyś się linkiem snitch.gif
Go to the top of the page
+Quote Post
eai
post
Post #8





Grupa: Zarejestrowani
Postów: 367
Pomógł: 10
Dołączył: 20.05.2005

Ostrzeżenie: (0%)
-----


Zend_Layout: zip / zip
Przykłady różnego użycia: zip / rar

A potem możesz jako plugin lub w bootscrapie, nie wiem jak to masz napisane każdy piszę jak lubi winksmiley.jpg
  1. <?php
  2.  
  3.  $view = new Zend_View();
  4. // ustalasz sobie co tam chcesz w widoku, zresztą co Ci będę tłumaczył widać że zn
    asz się na rzeczy :)
  5.  
  6.  
  7. Zend_Layout::setPath('../application/layouts');
  8. Zend_Layout::setDefaultLayoutName('stronaglowna');
  9. Zend_Layout::setView($view);
  10.  
  11. //Potem w kontrolerze jakimś jeśli używasz innego layoutu niż domyślny poprostu w 
    init() dajesz:
  12. $this->_helper->layoutManager->setLayoutName('podstrona');
  13.  
  14.  
  15.  //Wyłączenie layoutu i wyświetlanie tylko tego co wygenerował nam kontroller akcji
  16.  $this->_helper->layoutManager->disableLayouts();
  17.  
  18.  
  19.  // W application/layouts/stronaglowna.phtml tam gdzie chcesz wstawic tresc wygenerowanego kontrolera wsta
    wiasz:
  20.  echo $this->content; 
  21. ?>


A tutaj link skąd wszystko wziąłem: http://framework.zend.com/wiki/display/ZFP...CommentId=38281
Go to the top of the page
+Quote Post
Ozzy
post
Post #9





Grupa: Zarejestrowani
Postów: 204
Pomógł: 0
Dołączył: 26.12.2003
Skąd: Rzeszów

Ostrzeżenie: (0%)
-----


Ja także rozwiązałem ten problem używając Zend_Layout, zaproponowałem także autorowi pewnie ulepszenia. W tej chwili Zend_Layout jest przepisywany na nowo, co nie oznacza, że nie można używać wersji 1.4, która sprawuje się bardzo dobrze.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 09:19