Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF]routing + funkcja url
klapaucius
post
Post #1





Grupa: Zarejestrowani
Postów: 223
Pomógł: 3
Dołączył: 4.07.2009
Skąd: Kraków

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




Od razu zaznaczam, że dopiero uczę się ZF. Napotkałem na następujący problem. Mianowicie posiadam np. kontroler index, a w nim dwie akcje: akcja1 i akcja2. I do akcji akcja1 posiadam ustawiony następujący routing w pliku application.ini:

Kod
resources.router.routes.index_akcja1.route = "akcja1.html"
resources.router.routes.index_akcja1.defaults.controller = "index"
resources.router.routes.index_akcja1.defaults.action = "akcja1"


I teraz chcę w widoku akcji1 stworzyć link do akcji2 więc robię następujący url:

  1. $this->url(array('controller' => 'index', 'action' => 'akcja2'));


I otwierając ten widok standardowo za pomocą url: aplikacja/public/index/akcja1, wartosc tej funkcji jest poprawna. Natomiast wchodząc z adresu "routingowanego" aplikacja/public/akcja1.html, to owa funkcja url zwraca jako wartosc adres obecnege widoku (aplikacja/public/akcja1.html).

Dlaczego tak jest?
Go to the top of the page
+Quote Post
karolrynio
post
Post #2





Grupa: Zarejestrowani
Postów: 144
Pomógł: 25
Dołączył: 2.02.2009

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


Dzieje się tak ponieważ helper url domyślnie używa obecnego routing.

Jeśli chcesz żeby działało tak jak chcesz musisz podać nazwę routingu.
  1. $this->url(array('controller' => 'index', 'action' => 'akcja2'), 'index_akcja1');


Go to the top of the page
+Quote Post
klapaucius
post
Post #3





Grupa: Zarejestrowani
Postów: 223
Pomógł: 3
Dołączył: 4.07.2009
Skąd: Kraków

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


Czyli że jako drugi parametr funkcji url muszę podać nazwę routingu?? Zrobiłem tak własnie jak pokazales i niestety nic to nie zmienilo...
Czyli dalej funkcja ta zwraca mi adres "aplikacja/public/akcja1.html" (IMG:style_emoticons/default/sad.gif)
@edit
Bo oczywiście jeśli ustawie odpowiednio drugi routing do akcja2 i podam jako ten drugi parametr nazwe tego drugiego routingu, to poprawnie mnie przekieruje.. ale ja jednak wlasnie chce zrobic to bez tworzenia tego drugiego routingu... Zeby funkcja url utworzyla link na bazie samego kontrolera + akcji

Ten post edytował klapaucius 6.01.2013, 22:58:43
Go to the top of the page
+Quote Post
karolrynio
post
Post #4





Grupa: Zarejestrowani
Postów: 144
Pomógł: 25
Dołączył: 2.02.2009

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


Ok, już rozumiem Twój problem.
Masz 2 rozwiązania: dla każdej akcji definiować nowy routing jeśli jest bardzo niestandardowy.
Ale jeśli chcesz ustawić sobie linki w formie: /{nazwa_akcji}.html
To możesz spróbować w application.ini:
Kod
resources.router.routes.index_akcja1.route = ":action.html"


Wtedy powinno chyba zadziałać:
  1. $this->url(array('controller' => 'index', 'action' => 'akcja2'), 'index_akcja1');
Go to the top of the page
+Quote Post
klapaucius
post
Post #5





Grupa: Zarejestrowani
Postów: 223
Pomógł: 3
Dołączył: 4.07.2009
Skąd: Kraków

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


Cytat(karolrynio @ 7.01.2013, 19:27:54 ) *
Ok, już rozumiem Twój problem.
Masz 2 rozwiązania: dla każdej akcji definiować nowy routing jeśli jest bardzo niestandardowy.
Ale jeśli chcesz ustawić sobie linki w formie: /{nazwa_akcji}.html
To możesz spróbować w application.ini:
Kod
resources.router.routes.index_akcja1.route = ":action.html"


Wtedy powinno chyba zadziałać:
  1. $this->url(array('controller' => 'index', 'action' => 'akcja2'), 'index_akcja1');

Niestety nic to nie zmieniło.
W takim skoro nie da się nic zrobić, no to zostanę przy ustawieniu routingu do wszystkich stron. Choć jednak uważam, że jakieś jest to dziwne rozwiązanie, bo muszę teraz routing ustawiać nawet do akcji, które nie mają widoku (a jedynie na przykład przekierowują) i jest to trochę dziwne no ale cóż.. skoro sie nie da inaczej...

Ten post edytował klapaucius 8.01.2013, 14:26:00
Go to the top of the page
+Quote Post
ze4lot
post
Post #6





Grupa: Zarejestrowani
Postów: 54
Pomógł: 1
Dołączył: 29.03.2007
Skąd: Kraków

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


a wyłączałeś domyślny routing zenda?
Go to the top of the page
+Quote Post
klapaucius
post
Post #7





Grupa: Zarejestrowani
Postów: 223
Pomógł: 3
Dołączył: 4.07.2009
Skąd: Kraków

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


Cytat(ze4lot @ 8.01.2013, 15:24:01 ) *
a wyłączałeś domyślny routing zenda?

A co to jest ten domyślny routing? To: ?
Kod
resources.frontController.defaultControllerName = "index"
resources.frontController.defaultAction = "akcja1"
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 11.10.2025 - 15:56