Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework] Domyślny routing
barthek23
post 10.07.2011, 00:45:18
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 17.06.2009
Skąd: Warszawa

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


Witam,

Ustawiłem sobie taki router

Cytat
www.adres.pl/tomek


  1. $router = Zend_Controller_Front::getInstance()->getRouter();
  2. $profil = new Zend_Controller_Router_Route_Regex('(.+)',
  3. array('module' =>'default','controller'=>'user', 'action'=>'profil'),
  4. array(1 => 'name'),'%s');
  5. $router->addRoute('profil',$profil);


I teraz nie mogę się dostać do standardowego routera czyli np. /user/profile/ bo wszystko jest traktowane pod powyższy router.
Czy jest możliwość ustawienia routerów tak aby najpierw był brany pod uwagę standardowy dopiero później dodatkowe?
Go to the top of the page
+Quote Post
pawv
post 10.07.2011, 09:30:03
Post #2





Grupa: Zarejestrowani
Postów: 25
Pomógł: 5
Dołączył: 9.02.2011
Skąd: warszawa

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


  1. <?= $this->url(array(),'default',true);?>


drugi parametr odpowiada za routing, default to nazwa podstawowego routingu
Go to the top of the page
+Quote Post
barthek23
post 10.07.2011, 22:15:17
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 1
Dołączył: 17.06.2009
Skąd: Warszawa

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


Nie chodzi mi o generowanie linku wedłgu routera.
Tylko chciałbym osiągnąć taki efekt że jak ktoś wejdzie w taki link
Cytat
www.adres.pl/tomekk

To zadziała zdefiniowany kontroller.
Ale jeżeli wejdziemy na np.
Cytat
www.adres.pl/user/profil

gdzie user to controller a profil action, zadziała defaultowy router.
W tej chwili coby nie zostało wpisane po / definiowane jest przez napisany przeze mnie router.
Czy da się poprostu zrobić tak żęby ważniejszy był defaultowy router a dopiero po nim zdefiniowane.
Go to the top of the page
+Quote Post
pawv
post 11.07.2011, 10:35:47
Post #4





Grupa: Zarejestrowani
Postów: 25
Pomógł: 5
Dołączył: 9.02.2011
Skąd: warszawa

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


Twój router przede wszystkim jest źle napisany, ponieważ nadpisuje defaultowy router. Każdy string wprowadzony w adresie traktowany jest jako poprawna wersja routingu profil.
Możesz np. dodać prefiks po którym Twój routing będzie rozpoznawany.
  1. $router->addRoute(
  2. 'profil',
  3. new Zend_Controller_Router_Route(
  4. '/profil/:name',
  5. array('module' =>'default','controller'=>'user', 'action'=>'profil')
  6. )
  7. );


Teraz gdy w url wpiszesz http://twojastrona.com/profil/darekk, wywołany zostanie routing profile i dodatkowo działał będzie też adres http:/twojastrona.com/default/user/profil/name/darekk
Go to the top of the page
+Quote Post
bmL
post 11.07.2011, 18:01:53
Post #5





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

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


Routery są dopasowywane w odwrotnej kolejności do kolejności w jakiej były dodawane (z tego co pamiętam). Możesz spróbować usunąć standardowe routery i dodać je ponownie po twoim routerze ale tu z kolei nie wiem czy załapie ten od profilu bo będzie przysłaniany przez:
(pozwól że posłużę się konfigiem):
Kod
resources.router.routes.controller_only.route = "/:controller/"
resources.router.routes.controller_only.defaults.action = "index"

Tak więc pewnie będziesz musiał dodać coś co będzie jednoznacznie określało (np. tak jak zaproponował przedmówca) jaki routing powinien być zastosowany.


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
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: 13.06.2025 - 00:37