PDA

Vollständige Version anzeigen : Zend_Form und Decorators -> Verständnisproblem


puschel85
01.06.2008, 20:53
Da ich dieses Forum bisher nur mitlesend genutzt habe, erstmal ein "Hallo" in die Runde.

Seit einiger Zeit beschäftige ich mit dem ZF - soweit so gut, ist ne Klasse Sache. Aber irgendwie stoße ich bei Zend_Form an meine Denk-Grenzen :)

Die Idee, Forms via INI "deklarieren" zu können, hat mir spontan zugesagt. Ich habe daher folgendes Formular definiert:

; editForm
editForm.action = "product/edit"
editForm.method = "post"

; Nummer
editForm.elements.nr.type = "text"
editForm.elements.nr.options.required = true
editForm.elements.nr.options.label = "Nummer"

; Name
editForm.elements.name.type = "text"
editForm.elements.name.options.required = true
editForm.elements.name.options.label = "Name"

; fieldset
editForm.displayGroups.all.elements.nr = "nr"
editForm.displayGroups.all.elements.name = "name"
editForm.displayGroups.all.options.legend = "Test-Legend"

Das Ding hol ich mir anschließend aus der Config und setzte es in der Action wie folgt ein:

public function test2Action() {
$config = Zend_Registry::get('product');
$form = new Zend_Form($config->editForm);

echo $form->render();

exit;
}

Das ZF macht mir daraus folgendes:
<form enctype="application/x-www-form-urlencoded" action="product/edit" method="post"><dl class="zend_form">
<dt>&nbsp;</dt><dd><fieldset id="all"><legend>asdfgqwert</legend>
<dl>
<dt><label for="nr" class="required">Nummer</label></dt>
<dd>
<input type="text" name="nr" id="nr" value=""></dd>
<dt><label for="name" class="required">Name</label></dt>
<dd>
<input type="text" name="name" id="name" value=""></dd></dl></fieldset></dd></dl></form>

Soweit, so gut, ... oder auch nicht.

Was ich mich frage ist, wieso ZF um das Fieldset nochmal <dl><dt><dd> baut. Trotz nun schon stundenlanger Experimente mit den Decorators und mehr als nur einmaligem Lesen des Manuals stehe ich voll auf dem Schlauch. Durch die Logik der Decorators steige ich nicht durch, und die Frage, "welchen setze ich wie wann ein - und warum?" konnte ich mir bisher auch noch nicht beantworten.

Hoffe, Ihr könnt mir auf die Sprünge helfen!

Gruß,
Puschel

Mike
01.06.2008, 20:57
Schau dir mal den Artikel von Matthew in der Zend Dev Zone an:
http://devzone.zend.com/article/3450-Decorators-with-Zend_Form

puschel85
03.06.2008, 18:39
Danke, das hat die diversen Groschen zum Fallen gebracht!