Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZendFramework]linki w zend
elmozaur
post
Post #1





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

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


Witam.

Zrobilem prosta stronke, ktora obsluguje nastepujace adresy url (wpisywane z palca):
www.strona.pl
www.strona.pl/en
www.strona.pl/en/
www.strona.pl/content/tytul,30,20.htm
www.strona.pl/content/en/tytul,30,20.htm

pytanie:
w jaki sposob moge automatycznie generowac tego typu linki?
- interesuje mnie generowanie linkow w dynamicznym kontencie oraz w statycznym layoucie.

Najwiekszy problem mam z tym, ze w statycznym layoucie chcialem umiescic 3 flagi ktorymi przelaczalbym jezyki.
kazda flaga dodawalaby do urla zmienna lang lub zmieniala jej aktualna wartosc.

Routing zrobiony jest na regexach i wyglada tak:
  1. $route = new Zend_Controller_Router_Route_Regex (
  2. 'content/(?:([a-z]{2})/)?([a-z]+),([0-9]+),([0-9]+)\.htm',
  3. 'lang' => $lang,
  4. 'module' => 'default',
  5. 'controller' => 'content',
  6. 'action' => 'index'),
  7. 1 => 'lang',
  8. 2 => 'napis',
  9. 3 => 'id',
  10. 4 => 'kat'
  11. ),
  12. 'content/%s,%d,%d.htm'
  13. );
  14. $route = new Zend_Controller_Router_Route_Regex (
  15. '([a-z]{2})',
  16. 'lang' => $lang,
  17. 'module' => 'default',
  18. 'controller' => 'index',
  19. 'action' => 'index'
  20. ),
  21. 1 => 'lang'
  22. ),
  23. '%s'
  24. );


System postawiony jest na najnowszym Zendzie i Smarty3
Tak sie domyslam ze polaczenie ze smarty troche utrudnia gdyz nie moge uzyc $this->url(), ale oczywiscie moge sie mylic

czy ktos ma pomysl jak to ugryzc ?
Go to the top of the page
+Quote Post
mortus
post
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Niedawno ktoś pytał o to samo. Rozwiązaniem jest plugin dla systemu Smarty.

Zresztą to właśnie Ty o to pytałeś. Uzyskałeś odpowiedź, więc po co drugi taki temat?
Go to the top of the page
+Quote Post
elmozaur
post
Post #3





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

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


juz mowie dlaczego pisze

plugin faktycznie dziala (dzialal) z tym ze na podstawowym routerze i podstawowych routingach.
Jesli ja zdefiniowalem sobie nowe routy to zrobil sie klopot bo plugin ich nie rozpoznaje.

zrobilem wiec taki myk:
  1. if(isset($urlParams['route'])){
  2. $route_name = $urlParams['route'];
  3. $route = $router->getRoute($route_name);
  4. $droga = $route->assemble($urlParams, $route_name, $reset, $encode);
  5. } else {
  6. $droga = $router->assemble($urlParams, $route_name, $reset, $encode);
  7. }
  8.  
  9. return $droga;


dzieki temu uzyskalem dodatkowa zmienna ktora steruje routingiem.

niby jest dobrze i to o co mi chodzilo - ale to dziala tylko na stronie glownej np.: www.strona.com
wtedy linki ladnie i poprawnie sie generuja.
jesli natomiast jestem juz gdzies glebiej w serwisie np.: www.strona.com/content/en/tytul,30,20.htm to na takiej stronie link wyglada tak:
http://www.strona.com/content/en/content/e...tytul,32,30.htm a powinno http://www.strona.com/content/en/totytul,32,30.htm
http://www.strona.com/content/en/de a powinno http://www.strona.com/content/de

to tak jakby nowy adres byl doklejany do starego i nie wiem jak to obejsc reset mam ustawiony na true wiec niby powinno byc ok ($route->assemble($urlParams, $route_name, $reset, $encode)(IMG:style_emoticons/default/wink.gif)
a nie jest...
Go to the top of the page
+Quote Post
melkorm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


3 parametr url odpowiada za nazwę routera z którego korzystasz i do którego ma przypasować link.

Pokaż jak osadzasz link.

może slash na początku w atrybucie href ?

Ten post edytował melkorm 5.07.2011, 12:05:55
Go to the top of the page
+Quote Post
elmozaur
post
Post #5





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

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


link w layoucie wstawiam tak:
  1. <a href="{zend_url lang="en" id="32" kat="30" napis="totytul" route="kontent" zend_url_reset="true" zend_url_encode="true"}">link</a>


i jesli ten kink ogladam z poziomu strony glownej (www.strona.co czyli default/index/index/) to link wyglada poprawnie

jesli klikne na link i jestem juz na stronie nie glownej (np: www.strona.com/content/tytul,30,20.htm czyli default/content/index/) to link dokleja sie do juz istniejacego i wyglada tak:
http://www.strona.com/content/en/content/e...tytul,32,30.htm a powinien tak: http://www.gengine3.studiogif.com/content/...tytul,32,30.htm
Go to the top of the page
+Quote Post
melkorm
post
Post #6





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Cytat
może slash na początku w atrybucie href ?
Go to the top of the page
+Quote Post
elmozaur
post
Post #7





Grupa: Zarejestrowani
Postów: 518
Pomógł: 18
Dołączył: 21.07.2008

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


powiem tak:
po pierwsze primo nigdy bym sie nie spodziewal ze rozwiazanie moze byc takie proste ;-)

po drugie drugi sposob jaki znalazlem to sprawdzenie tablicy $urlParams w pluginie Smarty. Wywalenie zdublowanych kluczy i wartosci daje ten sam efekt.

po trzecie jesli ktos bedzie potrzebowal pluga do smarty w wersji obslugujacej rozne routy chetnie sie podziele

raz jeszcze dziekuje i pozdrawiam
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: 15.09.2025 - 17:47