![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 7 Dołączył: 6.01.2010 Skąd: Opole Lubelskie Ostrzeżenie: (0%) ![]() ![]() |
Witam,
piszę klasę do routingu PHP, czyli skrypt ma wybrać odpowiedni kontroler i metodę na podstawie przetwarzania adresu URL. Za bardzo nie wiem jak rozwiązać jeden problem. Mam taki wzorzec, z którym porównuję aktualnie przetwarzany link: Kod http://domena.pl/demo/<id> Przy wpisaniu: Kod http://domena.pl/demo/5 Wszystko jest ok. Natomiast nie wiem jak uzupełnić URL domyślnymi wartościami, czyli mając: Kod http://domena.pl/demo/ skrypt powinien stworzyć url np. tak: Kod http://domena.pl/demo/1
Ten post edytował lukasz91 17.04.2014, 13:32:36 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
przypisz w routingu domyślne <id> =>1
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 7 Dołączył: 6.01.2010 Skąd: Opole Lubelskie Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Zależy jak masz napisany ten routing.
Tak jak w zendzie robiąc routing linku "demo/:id", określasz w tablicy moduł, kontroler, akcje itd, tak możesz również id |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 7 Dołączył: 6.01.2010 Skąd: Opole Lubelskie Ostrzeżenie: (0%) ![]() ![]() |
Zależy jak masz napisany ten routing. Tak jak w zendzie robiąc routing linku "demo/:id", określasz w tablicy moduł, kontroler, akcje itd, tak możesz również id Tak chcę również zrobić u siebie, tylko nie mam pojęcia jak "dokleić" domyślne wartości do przetwarzanego adresu. Jako dane mam: wzorzec, przetwarzany link oraz tablicę z domyślnymi wartościami 'klucz' => 'wartość'. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Pokaż ten kod bo nie zgadniemy nigdy
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 7 Dołączył: 6.01.2010 Skąd: Opole Lubelskie Ostrzeżenie: (0%) ![]() ![]() |
Route
RouteCollection
Router:
Przykład
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 21 Dołączył: 10.06.2011 Skąd: Głogów Ostrzeżenie: (0%) ![]() ![]() |
Niezbyt się zagłębiałem w ten skrypt.
Lecz mógłbyś samemu sobie zrobić router i wszystko po kolei zrobić.
Prosta klasa, zmienna $SU dla linku domena/demo/1 Powinna mieć $SU[0] = demo, $SU[1] = 1 Dla domena/demo/ $SU[0] = demo, $SU[1] nie ustawi tej wartości Wtedy tylko zrobić if'y. np.
Jak potrzebujesz validacji, to nie problem ją napisać, poduczysz się może czegoś nowego. Tutaj masz świetny tutorial wyrażeń regularnych http://www.gajdaw.pl/php/wyrazenia-regular.../print.html#R23 A jak nie to zostają ci funkcje str albo is_ (np. is_numeric is_float itd.) Ten post edytował jackraymund 17.04.2014, 14:44:17 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 7 Dołączył: 6.01.2010 Skąd: Opole Lubelskie Ostrzeżenie: (0%) ![]() ![]() |
Niezbyt się zagłębiałem w ten skrypt. Lecz mógłbyś samemu sobie zrobić router i wszystko po kolei zrobić. To jest właśnie mój Router (IMG:style_emoticons/default/tongue.gif) Twój skrypt niestety nie rozwiązuje problemu. Zakładasz, że po każdym '/' jest nowy argument, a tak wcale nie musi być. |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Nie widzę sensu w próbie napisania routera z symfony od nowa, bo tamten już jest wystarczająco dobry.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 4 Dołączył: 11.08.2010 Skąd: Inowrocław Ostrzeżenie: (10%) ![]() ![]() |
Nie widzę sensu w próbie napisania routera z symfony od nowa, bo tamten już jest wystarczająco dobry. Bez urazy ale offtopic. Używanie FrameWorków do PHP to jak robienie sobie sepuku (IMG:style_emoticons/default/smile.gif) 2 razy więcej kodu, 2 razy więcej do ładowania, 2 razy większy bałagan a to z czym się męczysz to 5 minut pracy z .httaccess i 2 plikami php. Plik ruting.php oraz Plik main.php (IMG:style_emoticons/default/smile.gif) Na uczelni 3 razy potwierdziłem tezę że każdy FrameWork PHP nie zwiększa wydajności a pokazuje lenistwo piszącego portal i brak jego własnych bibliotek do budowania danej struktury (IMG:style_emoticons/default/smile.gif) Samo to stosowanie Templatów itd można osiągnąć w dużo wygodniejsze sposoby (IMG:style_emoticons/default/smile.gif) Ale to moje indywidualne zdanie i chciałem się z Panami podzielić uwagami (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Nikt ci nie każe używać całego frameworka, zbór bibliotek to też swego rodzaju framework.. Napisałem ci że nie ma sensu przepisywać, bo sam kiedyś przepisałem, czegoś się tam nauczyłem ale z czasem stwierdziłem że to jest bezsensu..
"kompiler" regułek routingu w symfony podczas budowania regexa rozdziela "zmienne/parametry" domyślnie względem pierwszego separatora i powstaje regexp w którym jakieś parametry mogą być domyślne, co sam regexp to umożliwia. Dla twojego przykładu regexp mógłby wyglądać tak: Kod #/demo(?:/(?=P<id>[\d]+))#s powyższy regex złapie adres /demo jak i /demo/1. Wartości domyślne, które podajesz w regułce routingu są łączone z tablicą wartości dopiero po dopasowaniu odpowiedniej regułki. Sam korzystam z klas routingu symfony, lecz router napisałem inny, aby pisanie regułek było nieco czytelniejsze i mnie to wygląda tak dla twojego przykładu:
Ten post edytował by_ikar 23.04.2014, 22:40:21 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 04:34 |