Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [cakephp]url'e Do Strony Wielojezycznej, url typu: mywebsite.com/en/controller_name/action_name/param
konraddo
post 10.08.2007, 10:57:19
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 1
Dołączył: 9.01.2007
Skąd: Sejny/Elbląg

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


Nie mam pomysłu jak w cakephp możnaby było stworzyć url'a typu:
mywebsite.com/en/controller_name/action_name/param
lub
mywebsite.com/de/controller_name/action_name/param

tak żeby cake pobrał odpowiednią część url'a dla języka, (en lub de), zapisał ją w np. zmiennej sesji, a wybór kontrolera, akcji oraz pobranie parametrów odbywałoby sie standardowo

chybaże istnieją inne sposoby jak cake móglby sobie poradzić z tego typu url'em

z góry dzięki z wszelkie opinie
Go to the top of the page
+Quote Post
defrag
post 10.08.2007, 12:02:28
Post #2





Grupa: Zarejestrowani
Postów: 82
Pomógł: 3
Dołączył: 15.01.2007

Ostrzeżenie: (10%)
X----


Routing stary. Podajesz lang jako normalny paramers, tylko w configu sobie przerutuj trase.
Go to the top of the page
+Quote Post
konraddo
post 10.08.2007, 14:12:23
Post #3





Grupa: Zarejestrowani
Postów: 42
Pomógł: 1
Dołączył: 9.01.2007
Skąd: Sejny/Elbląg

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


czyli adres pozostanie nadal:
mywebsite.com/en/controller_name/action_name/param
do akcji zostanie dostarczony parametr z wartoscia jezyka (pl, en, de)
ale w jaki sposob przerutowac ten url, przeniesc wartosc (pl, en, de) do tablicy z parametrami?
zapewne odbedzie sie to w pliku /app/config/routes.php
Go to the top of the page
+Quote Post
konraddo
post 11.08.2007, 11:34:52
Post #4





Grupa: Zarejestrowani
Postów: 42
Pomógł: 1
Dołączył: 9.01.2007
Skąd: Sejny/Elbląg

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


Heh troche nad tym czasu spedzilem ale sie udalo biggrin.gif:D

w pliku /app/config/routes.php
należy dodać linijkę:
  1. <?php
  2. $Route->connect('/:lang/:controller/:action/*');
  3. ?>

w ten sposob to co pojawi sie w linku na miejscu :lang zostanie zapisane w $this->params['lang'] co jest dostepne z poziomu kontrolera
zeby troche zautomatyzowac ustawianie jezyka dodajemy w pliku /app/app_controller.php
  1. <?php
  2. var $languages = array('pl', 'en', 'de');
  3. var $lang = 'pl';
  4.  
  5. function beforeFilter()
  6. {
  7. if (in_array(@$this->params['lang'], $this->languages)){
  8. $this->lang = $this->params['lang'];
  9. }
  10. else{
  11. $this->lang = 'pl';
  12. } 
  13. }
  14. ?>

a w kontrolerze np. /app/controllers/pages_controller.php mamy juz ustawiony jezyk:
  1. <?php
  2. class PagesController extends AppController
  3. {
  4. var $name = 'Pages';
  5. var $layout = 'default';
  6. var $uses = null;
  7.  
  8. function test()
  9. {
  10. echo $this->lang;
  11. }
  12. }
  13. ?>


odpalenie linku mysite.com/en/pages/test, wyswietli string en
link: mysite.com/cos/pages/test , wyswietli nam pl

zeby bylo jeszcze ciekawiej wszystkie parametry funkcji podajemy i odbieramy standardowo np.
przykladowy link: mysite.com/en/pages/test/23
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 - 05:17