CakePHP: Fieldset in Formularen

Mit der “inputs()”-Methode (man beachte das “s”) können gleich mehrere Formularfelder erstellt werden. Mit der üblichen Schreibweise kann dann auch ein “legend”-Tag erstellt werden:

echo $form->inputs(array('legend' => 'Login', 'username', 'password'));

Die Größe eines Inputfeldes…

… sollte – so möge man denken – auch über den Form-Helper in CakePHP definiert werden. Dass dies nicht funktioniert und auch nicht sinnvoll ist, soll der kurze Artikel verdeutlichen.

Innerhalb der Methode input können neben dem Namen des Feldes verschiedene Optionen innerhalb eines Arrays für die Eigenschaften angegeben werden. Mit maxLength zum Beispiel wird die maximale Anzahl an Buchstaben angegeben, die im Inputfeld erlaubt sind.

$form->input('name', array('maxLength' => '50'));

Eine Aussage zur Größe (zur Breite) des Feldes wird damit natürlich nicht festgelegt. Nun könnte man denken, dass mit einer Option “size” genau das erreicht wird. Ein Blick ins Manual von CakePHP zeigt jedoch, dass diese Option nicht existiert. (im Gegensatz zu der Meinung, die in diesem Post auf Nabble publiziert wird)

Und das ist auch gut so! Denn: Die Größe eines Inputfeldes ist natürlich ein Formatierungsproblem. Layout und Struktur sollten selbstverständlich weiterhin getrennt bleiben, weshalb die Größe eines Inputfeldes in einer CSS-Definition angegeben werden sollte.

Wer also zu Beginn mit der Standard CSS-Datei cake.generic.css arbeitet, der muss in dieser Datei die Angabe für die Größe (in diesem Beispiel vom Standard width:100% auf width:20% reduziert) der Inputfelder ändern.

input, textarea {
	clear: both;
	display: block;
	font-size: 140%;
	font-family: "frutiger linotype", "lucida grande", "verdana", sans-serif;
	padding: 2px;
	width: 20%;
}