Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] przyjazne url'e z .html na koncu
Forum PHP.pl > Forum > PHP > Frameworki
coolin1986
Mam prostą stronę opartą o Zend Framework, oraz autorski CMS też w Zendzie. Adres podstron wygląda tak:
www.domena.pl/strona/3450, czyli na koncu jako zmienna GET pobierane jest id.
Chciałbym żeby podstrony były wyświetlane w inny sposób: www.domena.pl/podstrona-pierwsza.html
Przy dodawaniu podstron w cms'ie zrobiłem generowanie przyjaznych url: czyli dla podstrony z id 3450 w bazie jest zapisywany string 'podstrona-pierwsza.html' na podstawie tytułu.
Jak teraz zrobić żeby to działało na front-endzie?
LBO
Rozwiązaniem jest Zend_Controller_Router_Route_Regex
coolin1986
No właśnie znalazłem to, ale nie kumam jak to działa. W przykładzie jest takie coś:
  1. <?php
  2. $route = new Zend_Controller_Router_Route_Regex(
  3. 'blog/archive/(d+)-(.+).html',
  4. 'controller' => 'blog', 
  5. 'action'  => 'view'
  6. ), 
  7. 1 => 'id', 
  8. 2 => 'description'
  9. ),
  10. 'blog/archive/%d-%s.html'
  11. );
  12. $router->addRoute('blogArchive', $route);
  13. ?>
czyli obowiązkowo musi być id?
Jak by ten skrypt wyglądał w moim przypadku? mam controller 'strona', action 'pokaz' i co ma być w kontrollerze? Rozumiem że mamy wyszukiwać stonę nie po ID a po 'description'?
LBO
  1. <?php
  2. $route = new Zend_Controller_Router_Route_Regex(
  3. '(.+).html',
  4. 'controller' => 'twoj_kontroler', 
  5. 'action'  => 'twoja_akcja'
  6. ), 
  7. 1 => 'nazwa_parametru_z_podstrona', 
  8. ),
  9. '%s.html'
  10. );
  11. $router->addRoute('nazwa_twojej_trasy', $route);
  12. ?>


Poczytaj o wyrażeniach regularnych i zmień '(.+).html' tak, żeby pasowało tylko do liczb, liter i myślnika.
orideith
Rozwiązanie możesz znaleźć w wątku, który napisałem na zf-pl http://forum.zend-framework.pl/viewtopic.php?id=396
Pozdrawiam.
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.