Formulare

Vorbereitung

In diesem Tutorial wird das erzeugen und Verbeiten von Formularen behandelt. Es wird empfohlen das "Document Controller" Tutorial zuerst zu bearbeiten.

Erzeugen eines Formulars

Zum Erzeugen eines einfachen Supportformulars benötigt man folgenden Code in seinem Template:


<?@ cube:documentcontroller namespace="org.sample" file="controllers/formcontroller" class="formcontroller" ?>
<cube:stylesheet>
	<html>
		<body>
			<html:form name="support">
			Name: <html:input name="name"/><br/>
			Email: <html:input name="email"/><br/>
			text: <html:textarea name="text"/><br/>
			<html:button name="send"/>
			</html:form>
		</body>
	</html>
</cube:stylesheet>

Verarbeiten des Formulars

Die Verarbeitung des Formulars geschieht im Controller. Dazu erzeugt man eine Methode mit Namen "send_onlick()", die automatisch aufgerufen wird wenn der Button mit Namen "send" geklickt wird. Diese Methode bekommt eine Instanz des Buttons zugewiesen. Über diese Instanz lassen sich die verschiedenen Eingabefelder abfragen.


<?php
class sample_formcontroller extends cube_document{
	function document_onload(){
		//do nothing
	}
	function send_onclick($button){
		$email = $button->form->controls['email']->getValue();
		echo $email;
	}
}
?>

Validierung

Zur Validierung des Formulares gibt es mehrere Validatoren. Diese werden direkt im Template eingebunden:

<?@ cube:documentcontroller namespace="org.sample" file="controllers/formcontroller" class="formcontroller" ?>
<cube:stylesheet>
	<html>
		<body>
			<html:form name="support">
			Name: <html:input name="name"/> <html:RequiredInputValidator controlToValidate="name" errorMessage="please enter your name!"/> <br/>
			Email: <html:input name="email"/> <html:RegulaerExpressionValidator expressionKey="email" requiredInput="true" controlToValidate="email" errorMessage="please enter a valid email address!"/> <br/>
			Text: <html:textarea name="text"/> <html:RequiredInputValidator controlToValidate="text" errorMessage="please enter your message!"/> <br/>
			<html:button name="send"/>
			</html:form>
		</body>
	</html>
</cube:stylesheet>