Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZEND] Routing, mapowanie linków
michal_robak
post 17.01.2011, 21:21:57
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 13.05.2006

Ostrzeżenie: (0%)
-----


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

Ten post edytował michal_robak 17.01.2011, 21:25:46


--------------------
do wszystkiego trzeba podejść z głową a problem sam się rozwiąże
Go to the top of the page
+Quote Post
Pilsener
post 18.01.2011, 09:37:13
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
michal_robak
post 18.01.2011, 10:07:39
Post #3





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 13.05.2006

Ostrzeżenie: (0%)
-----


tak myślałem że zbytnio kombinuję smile.gif


--------------------
do wszystkiego trzeba podejść z głową a problem sam się rozwiąże
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 23.06.2025 - 07:11