CakePHP: Ajax Layout

Werden Links oder Formulare mittels des AJAX-Helpers erstellt, um die Daten ansynchron zu laden und in einem DIV-Bereich anzuzeigen, wird in diesem DIV ggf. das Default-Layout genutzt. So kommt es dann zum Effekt der “Seite in der Seite”. Um das zu vermeiden, muss das Layout bspw. in der Methode (Action) entsprechend gesetzt werden. Möglich ist ein eigenes AJAX-Layout zu entwerfen oder aber gar kein Layout zu nutzen:

function TuDingeUndZeigeSieDannImDivAn () {
   $this->layout = '';
   $ergebnis = $this->tuWas();
   $this->set('view',$ergebnis);
}

YAML, CakePHP und die IE-Kommentare

Das YAML-Framework ermöglicht browserübergreifendes CSS Layout. Die entsprechenden IE Einschränkungen werden, wie so üblich, mit Kommentaren und Bedingungen realisiert. Zu beachten ist, dass die HTML-Kommentare der korrekten HTML-Konvention entsprechen, da sonst Fehler auftreten, wie z.B.

  • Anzeige von <!–[endif]–> im Browserfenster (geringeres Problem)
  • Javascript-Fehler bei CakePHP in Verbindung mit den AJAX-Helpern, Scriptaculous und Protoype. (größeres Problem)

Also immer schön an die Webstandards halten ;-)

CakePHP: AJAX inplaceeditor

Nutzt man die AJAX-Komponente des CakePHP-Frameworks, dann wird man unweigerlich (vermutlich) auch einmal in den Genuß kommen wollen, den inplaceeditor auszuprobieren:

echo $ajax->editor('DOM_id',$action,$options);

wobei $actions und $options jeweils ein Array mit den entsprechenden Schlüssel/Wert-Paaren sind.

Im $actions-Array wird auch die Methode des Controllers festgelegt, die bei per ansychronem Aufruf ausgeführt werden soll. In dem Controller, stehen dann die veränderten Werte in dem “params”-Array zur Verfügung:

$this->params['forms']['value'] # enthält den veränderten Wert des AJAX inplaceeditors