Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [cakephp]url'e Do Strony Wielojezycznej
Forum PHP.pl > Forum > PHP > Frameworki
konraddo
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
defrag
Routing stary. Podajesz lang jako normalny paramers, tylko w configu sobie przerutuj trase.
konraddo
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
konraddo
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
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.