Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CakePHP]Przekierowanie na wybrany layout
Forum PHP.pl > Forum > PHP > Frameworki
php22
Witam,
Posiadam 2 domeny, które są podpięte do tego samego źródła danych(ten sam katalog).
Potrzebuję rozpoznać z jakiego adresu ktoś wchodzi i odpowiednio przekierować go na dany layout.

np:
ktoś wchodzi z www.example.pl - zostaje załadowany layout 'exapmle'
ktoś wchodzi z www.example2.pl - zostaje załadowany layout 'exapmle2'
itd.

W jaki sposób rozpoznać z jakiego adresu wchodzi ktoś na stornę ?
Szymciosek
Jeśli obie domeny należą do Ciebie i tylko chce rozpoznać na którą ktoś wchodzi to może pobranie adresu -> case -> załaduje layout1...
kleus
AppController.php
  1. var $layout = NULL;
  2. function beforeRender(){
  3. switch($_SERVER['SERVER_NAME']) {
  4. case 'example.com':
  5. $this->layout = 'example1';
  6. break;
  7. case 'example2.com':
  8. $this->layout = 'example2';
  9. break;
  10. }
  11. if($this->layout === null){
  12. $this->layout = 'default';
  13. }
  14. }
php22
dziękuję, przekierowanie działa.

Tylko ładuje mi sie layout z katalogu view/layouts/example.ctp, a potrzebuje załadować layout z katalogu view/moje/example2.ctp
Jak załadować kontroler i przypisać akcję aby przenosiło na exmaple2.ctp?
Próbowałem coś w tym stylu ale nie działa:
  1. $this->controller = 'moje'; (kontroller znajduje sie w controllers/moje_controler.php)
  2. $this->action = 'example2';
kleus
ogolnie to layout zawsze jest pobierany z /View/Layouts ale mozna to chyba zmienic w bootstrap.php.
Musisz odszukac
  1. App::build

i próbować tutaj definicje zrobic np.
  1. App::build(array(
  2. 'View/Layouts' => array('/path/to/layouts', '/next/path/to/layouts'),
  3. ));
php22
Tzn layout ładuje mi się prawidłowo tylko strona nie geneuje sie tak jak powinna.

jak wpiszę recznie adres: example.com/moj_layout/100(jakis parametr) to strona sie generuje prawidłowo.
jak przekierowuje mi sie na ten layout - wyswietla sie pusta strona.
Mysle ze probelm jest w przekazaniu parametrów tylko jak to zrobić..?
przypisujac tak jak ponizej wyswietla mi tablice z tymi parametrami ale nie generuje sie strona tak jak po wpisaniu adresu recznie.

  1. $this->params['controller']='moj';
  2. $this->layout = 'example'; (folder views/layout/example.ctp)
  3. $this->params['action'] = 'example2'; (w folderze views/moje/example2.ctp)
erix
Cytat
Mysle ze probelm jest w przekazaniu parametrów tylko jak to zrobić..?

Napisz swój RoutingClass i nie rób bałaganu w AppController.
kleus
Cytat
ak wpiszę recznie adres: example.com/moj_layout/100(jakis parametr) to strona sie generuje prawidłowo.

a co Ty dokładnie chcesz zrobić?
opcja 1. chcesz zeby user wybieral soie z ktorego layoutu korzysta?
opcja 2. chcesz do routingu wrzucic parametr odpowiadajacy z wyswietlajacy sie layout? tak jak poprzednik napisz sobie classe route i korzystaj z Themes raczej
opcja3 chcesz miec 2 rozne layouty do 2 roznych domen (to juz masz zrobione i nie wiadomo po co dalej kombinujesz?)
php22
tak 2 layouty dla 2 różnych domen już działają.

Poradziłem sobie z tym, dziękuję wszystkim za pomoc smile.gif Już działa ta jak chciałem.
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.