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.