Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] router na przykładzie apple.com, tsntan cardiff
-Zxcy-
post
Post #1





Goście







Czy ktoś może orientuje się jak jest zaprogramowany ruter witryny apple.com?

Domyślam się że wszytko idzie przez index.php, sprawdza czy pierwsze 2 znaki, to nie język w URI i właśnie co dalej... Jak działa ten mechanizm że kontroler wie iż /macos/ to osobna strona, a później /macos/safari/ to jej podstrona?
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%)
-----


No przecież pokazałem ci przykład że to nie jest sztywne odwołanie do moduł/akcja. Popatrz na to, jak można w symfony taki adres zapisać, wygląda bardzo podobnie, ale odpalę go w 2 różnych modułach:

konfiguracja:
Kod
article_by_id:
  url:    articles/:subject/:year/:id.html
  param:  { module: readArticle, action: read }
  requirements: { id: \d+}

article_by_title:
  url:    articles/:subject/:year/:title.html
  param:  { module: article, action: permalink }


dla @article_by_id powstanie taki link: /articles/finance/2006/265.html
dla @article_by_title powstanie taki link: /articles/finance/2006/activity-breakdown.html

a mogę sobie równie dobrze pozamieniać miejscami te wartości i dla routera to będzie nie istotne w którym miejscu one są. Zauważ że przy każdym adresie odpalam dwa różne moduły i dwie różne akcje. Poprostu na podstawie konfiguracji, router tworzy wyrażenie regularne, które następnie jest dopasowywane do adresu jaki masz w przeglądarce, jeżeli nie zostanie dopasowany, jedzie dalej, tak długo aż nie znajdzie, a jak nie znajdzie rzuca błędem 404. A o to jakie wyrażenia powstaną po podaniu powyższej konfiguracji routerowi:

Kod
@article_by_id: #^/articles/(?P<subject>.+)/(?P<year>.+)/(?P<id>\d+)\.html$#x
@article_by_title: #^/articles/(?P<subject>.+)/(?P<year>.+)/(?P<year>.+)\.html$#x


Linki minimalnie różne, a odpalany jest różny moduł i różna akcja. A przecież parametry możesz umieścić w jakim miejscu tylko chcesz, nie musi być na końcu jak w moim przypadku. Prócz tego że dane są pozyskiwane z adresu, dostajesz też dane z routingu, czyli moduł, akcje itp, bo możesz tam jeszcze jakieś inne parametry zmieścić. Podobnie działa routing do którego dałem ci link. Jakby ci się chciało w ogóle przejrzeć, to byś nie zadawał takich pytań..

Ten post edytował by_ikar 4.01.2012, 12:57:42
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: 8.12.2025 - 12:13