BehaviourJS Helper für CakePHP
September 10th, 2006
Tags: ajax, cakephp, css, Development, javascript, kostenloses, opensource, phpSeit drei Tagen beschäftige ich mich mit dem CakePHP Framework und kann es kaum erwarten damit das nächste Projekt zu beginnen. Nun damit ich auch zufrieden bin und mich heimisch fühle suche ich mir derzeit ein gutes Set an Helpern, Components und Scripts damit ich auch gleich loslegen kann wenn ich möchte.
Der AjaxHelper und JavascriptHelper ist zwar gut, aber leider produzieren diese Inline-Javascript was natürlich nicht so schön ist. Aber so wie ich im IRC Channel mitbekommen habe wird auch nach Verstärkung in diesem und anderen Sektoren gesucht.
Ich benutze derzeit in all meinen Projekten das Behaviour Javascript von Ben Nolan. Damit kann man über CSS Selektoren jedem beliebigem HTML Element ein Script anhängen. Das hat den Vorteil das man Javascript komplett auslagern kann und der Quelltext viel sauberer ist. Auch in der HTML Produktion selbst hat man viel mehr flexiibilität. Wenn man sich ein Set an Behaviour Regeln angelegt hat kann man jederzeit darauf zurückgreifen. Konventionen und dynamik ist die halbe Miete.
Ich habe heute dne Helper fertiggestellt und bin hellauf begeistert, denn er ist mir wirklich gelungen. Hier mal ein Beispiel wie schnell man damit eine Formularvalidierung mit Ajax realisieren kann:
-
// Einfaches Registrierungsformular. Man beachte die "class"
-
<form action="" method="post" name="register" id="register">
-
-
Benutzername:
-
Passwort:
-
E-Mail:
-
-
Homepage (optional):
-
-
<div id="loading" style="display:none">
-
-
<?php $html->submit('registrieren'); ?>
-
-
<div id="message">Keine Fehler</div>
-
</form>
-
-
// Optionen für AJAX
-
'update' => 'message',
-
'url' => '/users/register_ajax',
-
'method' => 'post',
-
'with' => "Form.serialize('register')",
-
'loading' => "Element.show('loading')",
-
'complete' => "Element.hide('loading');"
-
);
-
-
// und jetzt mein Helper
-
$behaviour->addAjaxRule('#login', 'onsubmit', $options);
Ich erstelle eine Ajax Regel (das heisst prototypes Ajax.updater wird verwendet).
- Parameter 1: Alle Input-Elemente mit der Klasse "required"...
- Parameter 2: ... sollen bei "onsubmit"..
- Parameter 3: .. per Ajax die Felder an users/register_ajax schicken und das Resultat in das DIV 'message' schreiben.
Mehr dazu wird auf meiner offiziellen Seite für diesen Helper erklärt


September 10th, 2006 at 10:23
September 10th, 2006 at 14:50
Hmm, dann ist aber nun die Frage:
Externe JS Datei (wie jetzt) ODER einen Script-Block im Head (mit HeadHelper)?
Pro/con??