![]() ![]() |
Post
#121
|
|
|
Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków |
Witam,
Cytat Nie bardzo rozumiem co masz na myśli. Jeżeli moduł to pojedyncza funkcjonalność serwisu (np. newsy albo obsługa formularza) to w moim modelu moduł nazywa właśnie controller. To już mi się wydaje bardziej logiczne. Coś mi się wcześniej ubzdurało, że controller modułu =/= moduł. 'Błądzić jest rzeczą ludzką.' Cytat Mój mechanizm działa bardzo podobnie, tylko dodatkowo jest konfigurowalny i ma obsługę błędów (zakładam, że Twój też). Pewnie, że mam. Mój ErrorHandler jest dostępny na Algorytmy, klasy, funkcje --- Tak nie mając dostępu do komputera, myślałem, troszke o linkach i stwierdziłem, ze nie ma sensu tworzenia tak długiego linku. Zastosuje się do /module/option/id/, czyli np. /produkty/pokaz/14/. Aliasy ? hm.. nie głupie, ale. Aliasy są tworzone, dla unikalnych id. A jeśli chciałbyś stworzyć aliasy dla newsów i artykułów ? Wtedy mogą wystąpić takie same id i skrypt się sypie. Oczywiście zakładam dość ekstremalny przypadek, bo raczej nikt nie tworzy aliasów dla newsów i artów, tylko dla sklepów itp. jednak rozpatrzmy wszystkie przypadki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pozdrawiam |
|
|
|
Post
#122
|
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 0 Dołączył: 9.09.2005 Skąd: Sopot, Polska Ostrzeżenie: (0%)
|
Cytat Tak nie mając dostępu do komputera, myślałem, troszke o linkach i stwierdziłem, ze nie ma sensu tworzenia tak długiego linku. Zastosuje się do /module/option/id/, czyli np. /produkty/pokaz/14/. Czyli jak u mnie /controller/action/id. Moja metoda ma większe możliwości, bo nie ma siły żebyś nie potrzebował zaraz /module/option/id/value i /module/option/id/operation/id2 i tak dalej. U mnie jest to obsługiwane automatycznie (czyli nie stałe id, tylko parametry które option/action przyjmuje jak każda normalna funkcja). Cytat Aliasy ? hm.. nie głupie, ale. Aliasy są tworzone, dla unikalnych id. A jeśli chciałbyś stworzyć aliasy dla newsów i artykułów ? Wtedy mogą wystąpić takie same id i skrypt się sypie. Oczywiście zakładam dość ekstremalny przypadek, bo raczej nikt nie tworzy aliasów dla newsów i artów, tylko dla sklepów itp. jednak rozpatrzmy wszystkie przypadki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Nie wiem po co _można_ używać aliasów, ale ja dodałem je dlatego, że używamy tego w serwisach -- jako landing-pages do akcji promocyjnych (np. reklamy w różnych portalach mają różne landing-pages żeby na bieżąco zliczały wejścia) czy jako adresy podawane w reklamach. Docelowo system aliasów będzie konfigurowalny przez CMS, dlatego musi być dość uniwersalny. Nie wiem jeszcze co z tego wyjdzie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Post
#123
|
|
|
Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków |
Cytat(pies @ 2005-09-16 19:52:00) U mnie jest to obsługiwane automatycznie (czyli nie stałe id, tylko parametry które option/action przyjmuje jak każda normalna funkcja). Mogłbyś rozwinąć swoją wypowiedź ? najlepiej kodem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Post
#124
|
|
|
Grupa: Przyjaciele php.pl Postów: 384 Pomógł: 6 Dołączył: 11.09.2004 Skąd: Grodzisk Mazowiecki Ostrzeżenie: (0%)
|
hmmm, no to wziąłem temat po raz kolejny już na raz przeczytałem i nie wiem już co myśleć. Tyle tutaj mądrości (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Więc ja widzę co tak i chcę się upewnić czy dobrze rozumuje:
adres wygląda tak: http://www.example.com/<action>/<view>/ i teraz wchodzimy na stronkę: http://example.com/: odpalamy dośmyśną akcję i domyślny widok http://example.com/articles/: odpalamy akcję articles i domyślny widok dla niej http://example.com/news/showAll/: odpalamy akcję news i widok showAll http://example.com/news/rss/: odpalamy akcję news i widok rss (wyświtlamy rssy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ) http://example.com/news/pdf/423: odpalamy akcję news i widok pdf oraz dajemy jeszcze na końcu id news'a który ma być wyświtlony w formacie pdf'a (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) i teraz czy czuję o co biega w tym. Co inaczej powinno to działać ? (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif) Ten post edytował Strzałek 19.12.2005, 22:33:42 |
|
|
|
Post
#125
|
|
|
Grupa: Zarejestrowani Postów: 657 Pomógł: 2 Dołączył: 15.08.2003 Skąd: Łódź Ostrzeżenie: (0%)
|
To ja się dołącze z innym pytaniem. Co zrobić z Apache/php aby takie URLe jak powyżej działały? Co dać w .htaccess aby każdy taki URL odnosił się do http://example.com/index.php
Ważne także by URLe kończące się jakimś rozszerzeniem, lub takie: http://example.com/katalog/img.jpg?a=tekst nie były przeżucane do index.php ale interpretowane standardowo |
|
|
|
Post
#126
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%)
|
Vengeance: to pytanie nie ma duzego zwiazku z tematem, wiec zadaj je (a w zasadzie znajdz odpowiedz, bo to juz nie raz bylo przerabiane) w opowiednim miejscu, OT tutaj niepotrzebne.
|
|
|
|
Post
#127
|
|
|
Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków |
Strzałek: uruchom admina (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)
Jako, że nabyłem doświadczenia (no dobra, trochę), przebudowałem cały system do takiej postaci: /module/action/parametr/paratemtr1/parametr2 defaultowo /content/display/news FilterChain - (klasycznie) kolejka -> ActionChain:
(Uproszczony kod). noi mam ./modules/content/actions/display.php
Pozwoliło mi to na stworzenie panelu admina (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pozdrawiam |
|
|
|
Post
#128
|
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 0 Dołączył: 23.01.2006 Ostrzeżenie: (0%)
|
Nie bede zakladal nowego topic'u poniewaz moje pytania(e) dotycza(y) MVC.
Wszystko co wiem o tym wzorcu wiem z mini-frameworka zaprezentowanego niegdys przez hwao. U siebie zrobilem wiec bardzo podobnie, nie wiem jednak jak zaimplementowac akcje i w jaki sposob. |
|
|
|
Post
#129
|
|
|
Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%)
|
Stwórz sobie interfejs dla akcji, który posiada jedną metodę, w której akcja dokonuje wszystkich operacji na danych. Żeby nie była odizolowana od otoczenia przekaż jako argument wszystkie potrzebne informacje z kontekstu (żądanie, obiekt sesji itp.). Akcje lepiej uruchamiać w łańcuchach, więc musisz znaleźć sposób na zapisanie nazwy kolejnej akcji (ja to zapisuję w obiekcie Context). Jeżeli nie ma następnej akcji zapisujesz pusty ciąg znaków. Akcje uruchamiasz w pętli...
|
|
|
|
Post
#130
|
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 0 Dołączył: 23.01.2006 Ostrzeżenie: (0%)
|
Troszke strasznie to brzmi, cóz bede musial liczyc ze hwao zaimplementuje jeszcze do tego mini frameworka akcje, albo poszukac jakichs przykladow.
|
|
|
|
Post
#131
|
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 28.05.2006 Ostrzeżenie: (0%)
|
W skrócie, ale od początku:
- Mamy FronController, który uruchamia to, co potrzebne jest każdej akcji. - Na podstawie danych od użytkownika (np. z URL) uruchamia on odpowiednią akcje (dajmy na to listaNewsow). Tu na chwile praca FrontControllera się kończy, a funkcję określaną jako Controller przejmuje uruchomiona akcja. - akcja wczytuje plik modelu, pobiera z niego odpowiednie dane (tu: newsy), co może wyglądać tak:
I w tym miejscu mam pewne wątpliwości: 1) czy ta akcja (listanewsowAction) powinna tylko pobrać dane, zwrócić je FrontControllerowi, a ten wybiera odpowiedni widok? 2) czy akcja sama w sobie powinna pobrać dane, wybrać widok i go wyświetlić? Mam nadzieje, ze napisalem w miare zrozumiale. Główną myślą tego posta jest "jak uruchamiać widok, jak (w którym momencie) decydujemy jak dane wyświetlić (czy to bedzie smarty, pdf czy xml)". Jak wy to robicie? A może zupełnie pomieszałem? |
|
|
|
Post
#132
|
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 3.07.2003 Skąd: Szczecin->niebuszewo->*(next to window) Ostrzeżenie: (0%)
|
I w tym miejscu mam pewne wątpliwości: 1) czy ta akcja (listanewsowAction) powinna tylko pobrać dane, zwrócić je FrontControllerowi, a ten wybiera odpowiedni widok? 2) czy akcja sama w sobie powinna pobrać dane, wybrać widok i go wyświetlić? Mam nadzieje, ze napisalem w miare zrozumiale. Główną myślą tego posta jest "jak uruchamiać widok, jak (w którym momencie) decydujemy jak dane wyświetlić (czy to bedzie smarty, pdf czy xml)". Jak wy to robicie? A może zupełnie pomieszałem? Wg danymi po pobraniu i przetworzeniu powienien zajac sie Controller (nie koniecznie FrontController), taki kontroler zdecydowalby jaki ma byc format wyjsciowy danych (na podstawie obiektu Request) i zastosowac otrzymane dane do jakiegos szablonu. Na koniec calosc z odpowiednimi naglowkami wyslac do usera. U mnie kiedy FrontController dostaje spowrotem sterowanie z akcji uruchamia obiekt widoku, ktory sie tym zajmuje. |
|
|
|
Post
#133
|
|
|
Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków |
Wg. mnie to zależne jest od Ciebie jak framework ma działać.
IMHO FrontController uruchamia model, akcję i widok. Model pobiera dane i robi z nimi jakieś czary, przekazuje akcji, a akcja daje widokowi i mamy wynik. |
|
|
|
Post
#134
|
|
|
Grupa: Zarejestrowani Postów: 197 Pomógł: 0 Dołączył: 11.07.2005 Ostrzeżenie: (0%)
|
To ja zadam pytanie z seri pytań oczywistych (dla innych) (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) . Przedstawie to obrazowo:
Czy model jest klasą obsługującą np. daną tablę w bazie danych:
Czy może jest klasą mającą na celu np. obsługę newsów (a więc nie tylko tablei news):
Ten post edytował Levabul 15.07.2006, 12:00:21 |
|
|
|
Post
#135
|
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%)
|
Te wszystkie klasy należą do modelu. Model jest to wewnętrzna logika aplikacji, włącznie z częścią komunikującą się z bazą danych. Zazwyczaj część odpowiadającą za komunikację z bazą danych wydorębnia się w modelu (w moduł DAO - data access object) ale nadal logicznie rzecz ujmując jest to część modelu. Przynajmniej ja to tak rozumiem.
|
|
|
|
Post
#136
|
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 3.07.2003 Skąd: Szczecin->niebuszewo->*(next to window) Ostrzeżenie: (0%)
|
Jesli moge zastapic slowo model akcja to akcja ma za zadanie wykonac operacje na danych nie dbajac gdzie i jak sa zapisane oraz jakiego sa formaty (no oczywiscie w pewnych granicach). Jak dobijasz sie dodanych to juz raczej nie ejst sprawa modelu, mozesz zastowosowac metode aktywnego rekordu, jakas abstrakcje w stylu PEAR::MDB lub SDO i inne wynalazki.
|
|
|
|
Post
#137
|
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 0 Dołączył: 23.01.2006 Ostrzeżenie: (0%)
|
Witam,
Wydaje mi sie ze w moim projekcie udało mi sie zaimplementowac wzorzec MVC, moze nie dokladnie i nie idealnie ale przeciez nie o to chodzi, trzeba korzystac z pasujacych nam rozwiazan a nie wdrazac je na sile. Doszedlem jednak do pewnego momentu, ktory zainteresowal mnie. Router rozbija URL i zwraca jako tablice. Pierwszy element tablicy to moduł, ktory ma zostac "odpalony". Wszystko jest przemyslane i dobrze dziala, ale teraz mam dobudowac jeszcze jeden, administracje. Nie moze byc on wlaczany na tych samych prawach jak inne moduły. Znajduje sie on w innym folderze, w innym folderze beda jego szablony. Zle by bylo przeciez gdy w folderze styli byly default, jakisinny, styl_do_admina. W moim projekcie FrontController, to glowna klasa zarzadzajaca modulami do wczytania. Jak zastrzec ze modul 'admin' ma byc traktowany w inny sposob? Nie chodzi mi oczywiscie o to zebyscie powiedzieli "potraktuj to if'em" bo tak mozna najprosciej. Chodzi mi o to jak wy robicie to u siebie. |
|
|
|
Post
#138
|
|
|
Grupa: Zarejestrowani Postów: 358 Pomógł: 0 Dołączył: 3.07.2003 Skąd: Szczecin->niebuszewo->*(next to window) Ostrzeżenie: (0%)
|
Nie jestem pewien czy Router powinien rozbijac URL na tablice, wydaje mi sie ze to Geqest powinien to robic a na Router spada odpowiedzialnosc za dostarczenie mechanizmu tworzenia linkow i dostarczenia info o akcji jaka zostala zarzadana.
Nie wiem czy dobrze rozumiem ale czy pytasz o autoryzacje? Czy chcesz wiedziec czy uzytkownik X ma prawo wykonac akcje Y? Ja to robie w ten sposob, ze te akcje, ktore maja ograniczona liczbe uzytkownikow (np. akcje administracyjne) przed swoim wykonaniem musza wykonac akcje autoryzacyjna, ktora jest zwykla akcja tyle tylko ze jesli stwierdzi ze user X nie ma prawa wykonac akcji Y to rzuci wyjatkiem a do wykonania zarzadanej akcji nie dojdzie. Daje mi to duza elastycznosc co do wyboru metody i algorytmu autoryzacji, wszysko mam w jednym miejscu i cokolwiek by sie nie zmienilo wystarczy ze zmienie jedna akcje aby dostosowac sie np. do LDAP'a |
|
|
|
Post
#139
|
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 0 Dołączył: 22.01.2006 Ostrzeżenie: (0%)
|
Ja w ogóle rozdzieliłem kontroler części administracyjnej i użytkownika (apache jest u mnie front controllerem).
W konfiguracji http ustawiłem też aby część adminstracyjna serwisu była dostępna pod innym portem przykładowo 8100. Natomiast w katalogu htdocs mam dwa podkatalogi 'user' i 'admin'. kiedy użytkownik wchodzi poprzez tradycyjne 'www.mojadomena.com' apache przekierowuje na kontroler w katalogu 'user' a kiedy wchodzi na 'www.mojadomena.com:8100' apache przekierowuje na kontroler w katalogu 'admin'. Oczywiście aby dokładnie tak to załatwić trzeba mieć pełny dostęp do konfiguracji apache'a.. ale ogólnie idea jest taka, że wydzieliłem osobne ścieżki na część użytkownika i administratora co oczywiście nie przeszkadza im korzystać z tych samych modułów. Ten post edytował mariuszn3 26.07.2006, 22:52:58 |
|
|
|
Post
#140
|
|
|
Grupa: Zarejestrowani Postów: 122 Pomógł: 0 Dołączył: 23.01.2006 Ostrzeżenie: (0%)
|
Squid: zle zrozumiales, fakt, autoryzacja bedzie kolejnym krokiem, ale chodzi mi wlasnie o to o czym mowi mariuszn3.
Rozdzielenie czesci administracyjnej od czesci uzytkownika. Poczynajac wlasnie od kontrolera. Rozwiazanie ciekawe, ale wymaga jak juz napisał dostepu do Apache'a. |
|
|
|
![]() ![]() |
|
Aktualny czas: 4.12.2025 - 11:36 |