Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework] Route - kolejność
Forum PHP.pl > Forum > PHP > Frameworki
MarcinTryka
Witam.
Mam na przykład takie rodzaje linków rodzaje linków

/admin
/admin/:module
/
l/:kategoria
/:kategoria/:podkategoria

W jakiej kolejności dodawać routery żeby te wymienione wcześniej miały "większy priorytet".
Jak Zend_Framework radzi sobie z obsługa adresów pasujących do dwóch wzorców? Uzyje pierwszego dodanego wzorca, czy drugiego?
np wpisuję: strona.pl/admin chciałbym aby w pierwszej kolejnoci użyło routera pierwszego, a nie potraktowało 'admin' jak parametr :kategoria
nospor
w dokumentacji zenda masz to wszystko opisane. Wystarczy przeczytac. O zwyklej metodzie prob i bledow juz nie wspomne smile.gif
MarcinTryka
Cytat
w dokumentacji zenda masz to wszystko opisane. Wystarczy przeczytac. O zwyklej metodzie prob i bledow juz nie wspomne


Czytałem w dokumentacji i nie działa tak u mnie, dlatego tu piszę.
mam taki podział:

  1. <?php
  2. $router->addRoute(
  3.    'default',
  4.    new Zend_Controller_Router_Route(':page1', array('controller' => 'index', 'action' => 'index'))
  5. );
  6. $router->addRoute(
  7.    'default2',
  8.    new Zend_Controller_Router_Route(':page1/:page2', array('controller' => 'index', 'action' => 'index'))
  9. );
  10. $router->addRoute(
  11.    'admin',
  12.    new Zend_Controller_Router_Route('admin', array('module'=>'admin', 'controller' => 'index', 'action' => 'index'))
  13. );
  14. $router->addRoute(
  15.    'admin_modules_controller',
  16.    new Zend_Controller_Router_Route('admin/:module/:controller/', array('module'=>':module','controller'=>':controller','action'=>'index'))
  17. );
  18. ?>

Jeżeli wchodzę pod http://strona.com/admin/ To łapie mi router pierwszy ('default'), jeśli nawet przeniosę router 'admin' przed 'default' to nic się nie zmienia. Skolei jak mam adres: strona.pl/admin/login/ To nie wpada mi w pierwsze routery, ylko wchodzi w admin_modules_controller.
nospor
Cytat
Jeżeli wchodzę pod http://strona.com/admin/ To łapie mi router pierwszy ('default'),

a probowales tak:
  1. <?php
  2. $router->addRoute(
  3.   'admin',
  4.   new Zend_Controller_Router_Route('admin/', array('module'=>'admin', 'controller' => 'index', 'action' => 'index'))
  5. );
  6. ?>

?
grzana12
Ja mam routery inaczej rozwiązane. A mianowicie mam ok 20 routerów w xml-u. W pętli zrobiłem dodawanie routerów.
  1. <?php
  2. $validRoutes = new Zend_Config_Xml('../application/settings/routes.xml', null);
  3.  
  4. // Adds this routes to router
  5. foreach ($validRoutes as $name => $validRoute) {
  6.    $routeName = $validRoute->defaults->module[0] . '_';
  7.    $routeName .= str_replace('/', '', rtrim($validRoute->route, '/'));
  8.    
  9.    $router->addRoute(
  10.        $name,
  11.        new Zend_Controller_Router_Route(
  12.            $validRoute->route,
  13.            $validRoute->defaults->toArray()
  14.        )
  15.    );
  16. }
  17. ?>


działa to tak jak tego oczekujesz!
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.