Ajax mit Yii

Hallo erstmal :slight_smile:

Ich möchte mit Yii eine Webapplikation entwickeln, bei der sämtliche Seiten und Formulare über Ajax geladen werden können. Ich habe mich dann erstmal mit dem Buch von Jeffrey Winesett hingesetzt und komme nun aber sicher mal ans Ende des Schinkens. Bis dahin ist auch alles klar und funktioniert soweit gut. Was ich aber ein bisschen vermisse, ist ein Kapitel über die Ajaxfunktionalität, die das Framework bietet.

Meine Frage lautet nun: Gibt es best practices, wie man mit Yii und Ajax eine Seite entwickelt? Mir ist dabei wichtig, dass die Seite auch bei deaktiviertem JavaScript noch funktioniert. Es soll also eine Art Fallback haben… Stichwort unobtrusive JavaScript.

Die Auffassung von vielen hier (und auch meine) ist: Die Ajax-Funktionen von Yii sind als Helper für einfache Fälle gedacht. Alles was drüber hinausgeht verwirklicht man am besten direkt z.B. in jQuery. Yii eignet sich sehr gut als Basis für die Serverseite, ist aber ein PHP-Framework. Jede einigermaßen fortgeschrittene AJAX-App braucht daher eigenen Javascript-Code auf der Clientseite.

Hier gibts im Web sehr viel gute, allgemeine Informationen. "Unobtrusive Javascript" als Stichwort hast du ja schon genannt. Auf der YUI-Seite von Yahoo hab ich z.B. viele gute Tutorials gefunden (oder mal nach Douglas Crockford googlen). Man kann mit Yii schön die "Fallback"-Funktionen aufbauen und dann über Javascript Zusatzfunktionen "oben drauf packen". So haben wir das z.B. auch viel bei stay.com gelöst. Das meiste dort basiert auf "handgeschnitzten" Javascript-Modulen.

Vielen Dank für die schnelle Antwort.

Im Klartext heisst das:

  1. Basisfunktionalität in Yii umsetzen ohne JavaScript.

  2. Mit beispielsweise jQuery Ajaxfunktionalität oben drauf packen.

  3. Die bestehenden Methoden im Controller der Webapp erweitern, so dass sie Ajax-Anfragen abhandeln können.

  4. Views erweitern, evt. verschachteln, da ja nicht immer der gesamte Inhalt neu geladen werden muss.

Ist das so etwa die Richtung, in die es gehen sollte?

Ist auf jeden Fall ein vernünftiger Ansatz, ja.

Besten Dank! Ich werd dann mal probieren das so umzusetzen.