Empfehlungen: Erweiterte Suche

Böse Falle

JavaScript und AJAX

Böse Falle

Beitragvon havanna » Sa 18. Jul 2009, 21:47

Hallo zusammen,
nur als kleiner Tipp: Die Tage rätselte ich, weshalb mein Ajax Aufruf kein Ergebnis brachte (jQuery / UI / Tabs). Das Bein hatte ich mir selbst gestellt: In meinem AppController setze ich das Layout in der Funktion beforeRender - tja, da kann man im Controller so oft wie man möchte das Ajax Layout angeben. Falls man diese Funktion im Controller behalten möchte (wie in meinem Fall) gibt es auch noch folgende Möglichkeit (am Ende der Funktion):
Code: Alles auswählen
      Configure::write('debug', 0);
      $this->layout = 'ajax';
      $this->render('name_der_funktion','ajax');

Dies übersteuert dann auf jeden Fall die Methode beforeRender des AppController.

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Böse Falle

Beitragvon euromark » So 19. Jul 2009, 15:14

echt?
wird die beforeRender() methode früher aufgerufen als der code der aktuellen controllermethode?
würde mich aber sehr wundern eigentlich *grübel*
euromark
 
Beiträge: 643
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: Böse Falle

Beitragvon havanna » So 19. Jul 2009, 16:41

Hi Mark,
probier's aus - wenn du zu einem anderen Ergebnis kommst, musst du mir sagen wie.
Ach so: Ich kam nach langen Suchen drauf nachdem ich den Beitrag eines anderen Users gefunden hatte - der hatte das gleiche Problem.

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Böse Falle

Beitragvon euromark » Mo 20. Jul 2009, 13:24

^^ war mir doch klar: so gehts natürlich nicht!
ich bin auch noch so doof es wirklich auszuprobieren

natürlich hab ich recht
wäre ja auch gegen jegliche cake konvention
beforeRender() wird erst aufgerufen, wenn die normale methode abgeschlossen ist

daher müsste die Methode im SomeController so ausschauen
Code: Alles auswählen

beforeRender(
 parent::beforeRender();
$this->layout = 'overridden';
)

und im AppController kann dann stehen bleiben:
Code: Alles auswählen

beforeRender(
$this->layout = 'default';
)


aber viel besser ist:
es im app controller gleich ins
beforeFilter() zu setzen!!!
dadurch kann es im SomeController gleich in der methode geändert werden

mark
euromark
 
Beiträge: 643
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows

Re: Böse Falle

Beitragvon havanna » Mi 22. Jul 2009, 08:17

Hallo Mark,
so wie Eingangs beschrieben, habe ich es im Moment. D.h. in der Methode beforeRender des AppController setze ich das Layout (ob das gut ist oder nicht, ist ein anderes Thema).

Beim Ajax Aufruf übersteuer ich das in der Funktion des aufgerufenen Controllers durch den oben genannten Befehl.

Ciao Thomas
Benutzeravatar
havanna
 
Beiträge: 191
Registriert: Mi 15. Okt 2008, 23:12
Wohnort: Bodman-Ludwigshafen
CakePHP-Version: 1.2.x
OS: WIN

Re: Böse Falle

Beitragvon euromark » Mi 22. Jul 2009, 11:38

und genau das kann wie gesagt nicht funktionieren
du musst irgendwas übersehen haben
euromark
 
Beiträge: 643
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 2.x
OS: Windows


Zurück zu JavaScript und AJAX

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron