Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZEND] Routing
Forum PHP.pl > Forum > PHP
michal_robak
Witam. Od niedawna zacząłem uczyć się Zend Frameworka i mam pytanie natury techniczej. Ale najpierw kilka słów wyjaśnienia. Piszę prostego CMS-a. Strona admina jest gotowa jeżeli chodzi chodzi o dodawanie usuwanie i przeglądanie PODSTRON. Teraz chcę zapisywać do bazy tak jakby dwie ścieżki. Pierwszą z nich jest standardowa ścieżka do podstrony druga natomiast jest przyjaznym linkiem. Oto przykład.

domyślna ścieżka do podstrony Kontakt:
zend_cms.local/cms/1
teraz przyjazny link ma wyglądać tak
zend_cms.local/contact

Teraz w bootstrapie mam inicjowanie "routerów" (nie wiem czy to poprawna odmiana, żeby mnie nikt za nią nie zbluzgał smile.gif):

  1. public function _initRoutes()
  2. {
  3. $frontController = Zend_Controller_Front::getInstance();
  4. $router = $frontController->getRouter();
  5.  
  6. $route = new Zend_Controller_Router_Route (
  7. 'cms/:id',
  8. array('module' => 'default',
  9. 'controller' => 'cms',
  10. 'action' => 'show')
  11. );
  12. $router->addRoute('index', $route);
  13. }


Więc napotkam w linku słówko cms to ide do modułu/controlera/akcji i w niej sobie odczytuje na podstawie parametru ID którą podstronę zczytać (edytowana za pomocą FCK edytora w adminie). Wszystko byłoby by cacy ale ... to nie jest to ... klienci już by się przyczepili dlaczego to jest taki dziwny link cms/1 zamiast jakiegoś słówka "contact". I wymyśliłem sobie takie coś:

Utworzę sobie routing przez który będzie przechodzić każdy link na stronie i w nim będę robił coś takiego:

1) sprawdzać adres linku z tabelką SeoMap (w której będę trzymać wszystkie mapowania linków)
2) jeżeli natrafię na link to pokazywać taką podstronę
3) w przeciwnym przypadku wywoływać defaultowy kontroller bądź kontroller dopasowany z url-a

Teraz jeżeli strona będzie czysto tekstowa to to może by się sprawdziło ale gdyby takich podstron o które mi chodzi było mało to wówczas leżę i kwiczę. Teraz niech ktoś mądry i rozsądny mi powie czy takie rozwiązanie ma ręce i nogi i czy jest wykonalne i co najważniejsze sensowne czy jest może awykonalne i robi się to zuepłnie w inny sposób questionmark.gif

EDIT
Proszę moderatora o przeniesienie tego posta do kategorii frameworki ... my mistake
Pilsener
Cytat
chcę zapisywać do bazy tak jakby dwie ścieżki. Pierwszą z nich jest standardowa ścieżka do podstrony druga natomiast jest przyjaznym linkiem
- po co coś takiego jest potrzebne? Linki dzisiaj generuje się dynamicznie.

Cytat
Więc napotkam w linku słówko cms to ide do modułu/controlera/akcji
- a po co coś takiego? Standardowa konstrukcja moduł/kontroler/akcja/parametry nie wystarczą? Gotowe rozwiązanie jest, po co kombinować?

Cytat
Utworzę sobie routing przez który będzie przechodzić każdy link na stronie i w nim będę robił coś takiego:

1) sprawdzać adres linku z tabelką SeoMap (w której będę trzymać wszystkie mapowania linków)
2) jeżeli natrafię na link to pokazywać taką podstronę
3) w przeciwnym przypadku wywoływać defaultowy kontroller bądź kontroller dopasowany z url-a
- dla mnie to kompletnie bez sensu, po co tworzyć jakiś routing skoro masz już zendowy? Jeśli nie podobają Ci się adresy moduł/kontroler/akcja/parametry to co za problem to zmienić i wrzucić np. moduł jako subdomenę? Po co trzymać linki w bazie i za każdym razem odpytywać bazę? I defaultowy kontroler i tak się odpali, jeśli nie podasz żadnego parametru.

Po mojemu jedyne co musisz zrobić, to dopisać do application.ini kilka linijek zmieniających standardowy routing zenda.
michal_robak
tak myślałem że zbytnio kombinuję smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.