Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Domyślne wartości w Routingu PHP
lukasz91
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
by_ikar
post
Post #2





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:

  1. <?php
  2.  
  3. return array(
  4. 'news' => array(
  5. 'path' => '/news/{page}',
  6. 'defaults' => array('_controller' => '\SomeApp\Controller\NewsController::show', 'page' => 1),
  7. 'requirements' => array('page' => '[\d]+'),
  8. ),
  9. );


Ten post edytował by_ikar 23.04.2014, 22:40:21
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 15.10.2025 - 10:04