Zend_Form und Array Schreibweise

Das Zend Framework bietet die Möglichkeit über Zend_Form schnell und gezielt Formulare zu erstellen. Damit die eingegebenen Daten als Array weitergegeben werden können, muss man Zend_Form dazu bringen, die Array Schreibweise zu verwenden.

Die Array-Schreibweise besteht darin, dass für jedes Formularfeld ein Attribut name besitzt, welches den Namen des Arrays trägt und als Index den Namen des Elements.

Folgender PHP-Code ist aus der Erstellung eines Zend_Form-Objekts entlehnt, welches durch Zend_Config aus einer Konfigurationsdatei geladen wird:

/application/models/BewerbungModel.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
class BewerbungModel
{
	private $_form;
 
	function __construct()
	{
		// Formular erstellen (aus Konfigurationsdatei):
		$config_path	= APPLICATION_PATH."/configs/form_bewerbung.ini";
		$config		= new Zend_Config_Ini($config_path, 'production');
		$this->_form	= new Zend_Form($config->form->bewerbung);
		$this->_form->setElementsBelongTo("bewerbung");
		$this->_form->setIsArray(TRUE);
	}
 
	function getForm()
	{
		return $this->_form;
	}
?>

Die Konfigurationsdatei dazu sieht so aus:

/application/configs/form_bewerbung.ini

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[production]
; Formular-Einstellungen
form.bewerbung.action = "/bewerbung"
form.bewerbung.method = "post"
 
; Benutzer-Name (Zend_Form_Element_Text)
form.bewerbung.elements.username.type = "text"
form.bewerbung.elements.username.options.label = "Name:"
form.bewerbung.elements.username.options.validators.strlen.validator = "StringLength"
form.bewerbung.elements.username.options.validators.strlen.options.min = "3"
form.bewerbung.elements.username.options.validators.strlen.options.max = "255"
form.bewerbung.elements.username.options.required = true
 
...

Aus Gründen der Vollständigkeit hier noch die „Bootstrap.php“ sowie der Controller und die View:

/application/Bootstrap.php

1
2
3
4
5
6
7
8
9
10
<?php
 
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
	protected function _initBewerbungModel()
	{
		Zend_Loader::loadClass('BewerbungModel',
		array(APPLICATION_PATH."/models"));
	}	
}

/application/controllers/BewerbungController.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
class BewerbungController extends Zend_Controller_Action
{
 
    public function init()
    {
        /* Initialize action controller here */
    }
 
    public function indexAction()
    {
	$formConfig = new BewerbungModel();
	$this->view->form = $formConfig->getForm();
    }
}

/application/views/scripts/bewerbung/index.phtml

1
2
3
<?php 
	echo $this->form; 
?>

Das Zend Framework wird nun bei der Ausgabe ein Eingabefeld für den Benutzernamen (username) anzeigen. Dieses Feld wird wie folgt aussehen:

<input type="text" name="bewerbung[username]" id="bewerbung-username" value="">

Wie man an bewerbung[username] erkennen kann, wird die Array-Schreibweise verwendet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.