![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 196 Pomógł: 2 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Próbuje napisać klasę Router do swojego systemu, jednak chyba coś mi nie wychodzi. Proszę spojrzeć.
Czy dobrze zrozumiałem założenie tej klasy? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 382 Pomógł: 0 Dołączył: 29.11.2005 Skąd: :jestem(); Ostrzeżenie: (0%) ![]() ![]() |
Czy ten kod nie działa...? Jeśli działa to w czym problem, jeśli masz wątpliwości to możesz je mieć tylko do funkcjonalności tej klasy. Poszukaj we frameworkach klasy która zajmuje się obrabianiem URL'i i na nich się wzoruj.Pozdrawiam
Ten post edytował jastu 24.08.2007, 10:56:36 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 196 Pomógł: 2 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Może, lepiej spytam tak, jakie zadania powinna mieć klasa Router? Tylko odczytywanie parametrów z adresu czy także tworzenie URL-i na potrzeby skryptu (przekierowania, formularze itd.)? Co w tej klasie powinno się znaleźć? Proszę bardziej o teorię niż kod.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
No ja u siebie tez mam router. I wykonuje on wszystkie czynnosci translujace url w kazda strone. Dekoduje adres do tablicy i z tablicy tworzy adres (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Ja u siebie napisałem rozpoznawanie zmiennych po ich typach (http://srodek.fc.pl/blog/19/Przyjazne-adresy---tworzymy-router). Obsługa roznych domen/subdomen to tez dobry pomysl...
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Przerobiłbym nieco metode generującą url'ka. Chodzi o uniwersalność. Dajmy na to, że masz domyślnie adresy zwykłe:
?action=Index&model=news&id=2 a chcesz mieć np. Index/id.2/News.html Ja rozwiązałem to tak, że podaje do funcji 3 argumenty, z czego ostatni moze byc pusty. function generateUrl($sAction, $sModel = 'Index', $aParametrs = array()) { [tu generowanie] } Z resztą chyba sobie poradzisz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 0 Dołączył: 14.06.2003 Skąd: Tomaszów Lubelski/Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
IMO o wiele wygodniejszy jest sposób bla( 'akcja/model?id=2&dupa=super' )
Konwencja zapożyczona troche z sf (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) ![]() ![]() |
Menic, nono chyba coś zmienie w mojej klasie router (IMG:http://forum.php.pl/style_emoticons/default/party.gif)
W ogóle od poniedziałku zabieram się za symfony... obczaje co i jak i może będę korzystał (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) |
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 384 Pomógł: 6 Dołączył: 11.09.2004 Skąd: Grodzisk Mazowiecki Ostrzeżenie: (0%) ![]() ![]() |
Cytat Próbuje napisać klasę Router do swojego systemu, jednak chyba coś mi nie wychodzi. Proszę spojrzeć. Dlaczego Ci nie wychodzi (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ? Wywala Fatal Error ? Chyba nie, a jeżeli nie tzn. że wychodzi. To co napisałeś działa i to się liczy. Jeżeli potrzebujesz żeby działało to jak działa to nie zmieniaj. Tak Ci wygodnie to tak rób. Nie rób niczego na siłę. Taka mała uwaga. Co powinien robić router? Powinien wyciągnąć z url'a informacje potrzebne kontrolerowi do działania, oraz powinien umieć później generować url'e. Tyle. Obszerniej na ten temat pisałem na moim blogu. Link w podpisie. Cytat Przerobiłbym nieco metode generującą url'ka. Chodzi o uniwersalność. Dajmy na to, że masz domyślnie adresy zwykłe: ?action=Index&model=news&id=2 a chcesz mieć np. Index/id.2/News.html Ja rozwiązałem to tak, że podaje do funcji 3 argumenty, z czego ostatni moze byc pusty. function generateUrl($sAction, $sModel = 'Index', $aParametrs = array()) { [tu generowanie] } Z resztą chyba sobie poradzisz winksmiley.jpg Mało uniwersalna to uniwersalność u Ciebie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ja u siebie taką rzecz rozwiązałem bardzo prosto i uniwersalnie: index.php?module=News&action=ShowOne&id=312 --> dane wyciągamy z $_GET index.php/news/showOne/312 --> router rozbijający /news/showAll index.php/news/id.312 --> RewriteRouter dziedziczący po normalnym routerze, z zadeklarowanymi ścieżkami. Przykład takiego routera u mnie na blogu w komentarzach notki o Routerze. Pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/Rkingsmiley.png) |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 10.10.2004 Skąd: Wodzisław Śląski Ostrzeżenie: (0%) ![]() ![]() |
To może ja się pochwalę. Ostatnio również pisałem klasę Routera. I teraz mój router sprowadza się wyłącznie do konfiguracji takiej:
[nazwaŚcieżki] pattern = "(lang:string)/index/(id:integer)/" controller = "page" action = "view" hidden_params = "" A więc nazwa wiadomo co oznacza. Pattern to szablon, posiada specjalne zmienne z możliwością ustalenia typu (string,integer,any). Kontroler wiadomo, akcja tak samo. Teraz ciekawa zmienna hidden_params, jej zastosowanie omówię w następnym przykładzie. [nazwaŚcieżki] pattern = "catalog/product/superprodukt.html" controller = "page" action = "view" hidden_params = "(id:22),(lang:pl)" W ten sposób odciążyłem htaccess. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Zmienne z hidden_params przetwarzam do klasy input. Do generowania urli wykorzystuję nazwę ścieżki. Podaję nazwę i url z parametrami. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 28.09.2025 - 23:20 |