Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> generowanie URL w MVC
szuset
post 20.10.2006, 10:47:43
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.10.2006

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


Witam,

Grzebie troche w tym php i tak się zastanawiam teraz jak rozwiązać problem generowania URL. Wymyślilem sobie takie rozwiązanie, że w klasie akcji będzie definiowane jakie parametry aktualnie przekazane w zapytaniu będą potrzebne do wygenerowania nowego url-a. np. numer strony, rodzaj sortowania, itp.
No i teraz moje rozterki bo wypadalo by z widoku wywołać metode tworzenia url-a i trzeba by podać nazwę akcji, co mi sie nie wydaje odpowiednie dla widoku. Z koleji zrobienie tego w każdej innej warstwie niepotrzebnie tylko będzie generować dane, bo tylko widok wie czy i jaki url będzie potrzebny.
Tak konkretniej to to chcialem w widoku dac cos ala:

FrontController -> GetURL(Model, ...) no i wypada podac nazwe akcji

Jakoś nie mogę sensownego rozwiązania wymyślić. W związku z tym proszę o pomoc i rozgrzeszenie:)
Go to the top of the page
+Quote Post
eai
post 20.10.2006, 13:44:03
Post #2





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

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


Generowanie URL powinno odbywać się w Routerze, to router odczytuje dane z URL wiec to router powinien też je generować.
Ustalasz sobie w jaki sposob przekazujesz parametry i tworzysz klase routera.

Np mozesz zrobic ze ?action=cos&where=news&what=edit

routera odczytuje akcje cos, gdzie 'news' co 'edycja'
a dispatcher ma za zadanie polaczyc (include) odpowiednie klasy i wczytac odpowiedni pliczek funkcje ktora je wszystkie wykona....

Tak ja to widzę
Go to the top of the page
+Quote Post
szuset
post 20.10.2006, 14:26:37
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.10.2006

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


Może się trochę bardziej rozpisze.

A jak rozwiązać sytuację gdy np mamy widok news-y, kalendarz i navigator stron, przy czym wyświetlane newsy zależą od wybranej daty w kalendarzu jak i wybranej strony w navigatorze. Zmieniając stronę należy uwzględnić aktualnie wybraną datę.
Czyli nie sprowadza sie to do prostego przypadku podania widoku i akcji do wykonania.

Ten post edytował szuset 20.10.2006, 14:34:50
Go to the top of the page
+Quote Post
eai
post 20.10.2006, 14:47:09
Post #4





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

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


Newsy, Kalendarz, Navigator stron to sa Modele nie są intergralną częscią FrameWorku tylko jego rozszeżeniem. Każde wywołanie strony wiąże się z przekazaniem url do routera, router pobiera dane ktore sa potrzebne
do dispatchera, dispacher wczytuje odpowiedni sterownik dla danej akcji,
sterownik to np funkcja switch ktora przechwytuje zmienne z routera (GET) i dolacza kolejne modele z odpowiednimi parametrami....

FrameWork daje Ci mozliwosc latwiejszego budowania stron, ale to ty budujesz recznie sterownik ktory uruchamia dane akcje, przeciez FrameWork nie zrobi za Ciebie wszystkiego nie bedzie wiedzial jakie masz funkcje w Modelu i jakie ma podac parametry, czesc kodu musi zostac napisana na zasadzie sterownika dla danej akcji pobierajac odpowiednie parametry.

sterownik.php?action=news&nawigator=32
  1. <?php
  2.  
  3.  $nawigator = nawigator($_GET['nawigator']);
  4.  $kalendarz = kalendarz($nawigator,(empty($_GET['time'])) ? time() : $_GET['time']);
  5.  $newsy = newsy($kalendarz);
  6.  
  7. ?>


Cos na tej zasadzie....

Ten post edytował eai 20.10.2006, 14:51:42
Go to the top of the page
+Quote Post
splatch
post 27.10.2006, 19:02:20
Post #5





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


http://trac.agavi.org/browser/trunk/src/ro...uting.class.php
http://trac.agavi.org/browser/trunk/sample...fig/routing.xml

Czytajcie, a znajdziecie, czy też uczcie się od najlepszych (Agavi?).


--------------------
Łukasz Dywicki
Independent Java and open source software consultant.
Blog - Java, OSGi, integracja oprogramowania..
Go to the top of the page
+Quote Post
Ociu
post 28.10.2006, 07:29:44
Post #6





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Osobiście wole takie rozwiązanie: http://ociu.pl/view.dll/39
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 Wersja Lo-Fi Aktualny czas: 27.06.2025 - 20:40