Standard Formular Dekoratoren die mit dem Zend Framework ausgeliefert werdenZend_Form wird mit verschiedenen Standard Dekoratoren ausgeliefert. Für weitere Informationen über die generelle Verwendung von Dekoratoren, siehe das Kapitel über Dekoratoren. Zend_Form_Decorator_CallbackDer Callback Dekorator kann einen gewünschten Callback ausführen, um Inhalte darzustellen. Callbacks sollten über die 'callback' Option spezifiziert werden, die dem Dekorator in der Konfiguration übergeben wird, und die jeder gültige PHP Callback Typ sein kann. Callbacks sollten drei Argumente akzeptieren, $content (den originalen Inhalt der dem Dekorator übergeben wird), $element (das Element das dekoriert werden soll), und ein Array von $options. Ein Beispiel Callback:
Dieser Callback kann mit array('Util', 'label') spezifiziert werden, und würde einige (falsche) HTML Markups für das Label erzeugen. Der Callback Dekorator würde entweder ersetzen, voranstellen, oder dem originalen Inhalt den zurückgegebenen Wert anhängen. Der Callback Dekorator erlaubt es, einen NULL Wert für die 'placement' Option zu spezifizieren, welche den originalen Inhalt, mit dem, vom Callback zurückgegebenen Wert, ersetzt; 'prepend' und 'append' sind genauso gültig. Zend_Form_Decorator_CaptchaDer Captcha Dekorator ist für die Verwendung mit dem CAPTCHA Formularelement. Es verwendet die render() Methode des CAPTCHA Adapters um die Ausgabe zu erzeugen. Eine Variante des Captcha Dekorators, 'Captcha_Word', wird auch üblicherweise verwendet, und erstellt zwei Elemente, eine Id und eine Eingabe. Die Id zeigt den Identifikator der Session gegen den verglichen wird, und die Eingabe ist für die Benutzerverifikation des CAPTCHA. Beide werden als einzelnes Element geprüft. Zend_Form_Decorator_DescriptionDer Description Dekorator kann verwendet werden, um eine Beschreibung in einem Zend_Form, Zend_Form_Element, oder Zend_Form_DisplayGroup Element anzuzeigen; es holt die Beschreibung, indem es die getDescription() Methode des Objektes verwendet. Übliche Anwendungsfälle sind das Anbieten von UI Hinweisen für Elemente. Standardmäßig, wenn keine Beschreibung vorhanden ist, wird keine Ausgabe erzeugt. Wenn die Beschreibung vorhanden ist, wird sie standardmäßig in ein HTML p Tag eingebunden, es kann aber ein Tag durch die Übergabe einer tag Option spezifiziert werden, bei der Erstellung des Dekorators, oder durch Aufruf von setTag(). Zusätzlich kann eine Klasse für das Tag spezifiziert werden, indem die class Option verwendet wird, oder durch den Aufruf von setOption('class', 'foo'); standardmäßig wird die Klasse 'hint' verwendet. Die Beschreibung wird escaped, indem der Escaping Mechanismus vom View Objekt standardmäßig verwendet wird. Das kann, durch die Übergabe eines FALSE an die 'escape' Option des Dekorators, ausgeschaltet werden, oder durch die setEscape() Methode. Zend_Form_Decorator_DtDdWrapperDer Standarddekorator verwendet Definitionslisten (<dl>) um Formularelemente darzustellen. Da Formularelemente in jeder Reihenfolge vorkommen können, werden Gruppen und Unterformulare angezeigt und können mit anderen Formularelementen interagieren. Um diese speziellen Elementtypen in der Definitionsliste zu behalten, erstellt der DtDdWrapper einen neuen, leeren Definitionsausdruck (<dt>) und bettet dessen Inhalt in ein neues Definitionsdatum (<dd>) ein. Die Ausgabe sieht dann wie folgt aus:
Dieser Dekorator ersetzt den, ihm angebotenen, Inhalt durch dessen Einbettung in das <dd> Element. Zend_Form_Decorator_ErrorsElement Fehler erhalten ihren eigenen Dekorator mit dem Errors Dekorator. Dieser Dekorator ruft den FormErrors View Helfer auf, welcher Fehlermeldungen in einer, ungeordneten, Liste (<ul>) als Listenelement darstellt. Das <ul> Element empfängt eine Klasse von "errors". Der Errors Dekorator kann entwedet vorangestellt oder dem Kontext, der Ihm übergeben wurde, angehängt werden. Zend_Form_Decorator_FieldsetAnzeigegruppen und Unterformulare zeigen ihren Inhalt standardmäßig in einem Fieldset an. Der Fieldset Dekorator prüft, ob entweder eine 'legend' Option oder eine getLegend() Methode in dem registrierten Element vorhanden ist, und verwendet dieses als Legende, wenn es nicht leer ist. Jeder Inhalt der übergeben wird, wird in ein HTML Fieldset eingebettet, wobei der originale Inhalt ersetzt wird. Alle Attribute die in den angezeigten Elementen gesetzt sind, werden dem Fieldset als HTML Attribute übergeben. Zend_Form_Decorator_FileFile Elemente haben eine spezielle Schreibweise wenn man mehrere File Elemente oder Unterformulare verwendet. Der File Decorator wird von Zend_Form_Element_File verwendet und erlaubt es mehrere File Elemente, mit einem einzelnen Methodenaufruf, zu setzen. Er wird automatisch verwendet und bestimmt den Namen des Elements. Zend_Form_Decorator_Form
Zend_Form Objekte müssen typischerweise ein
HTML Zend_Form_Decorator_FormElementsFormulare, Anzeigegruppen, und Unterformulare sind Sammlungen von Elementen. Um diese Elemente darzustellen, verwenden sie den FormElements Dekorator, welche durch alle Elemente iteriert, render() auf jedem aufruft und diese mit dem registrierten Trennzeichen verbindet. Es kann an Ihm übergebenen Inhalt entweder anhängen oder voranstellen. Zend_Form_Decorator_FormErrorsEinige Entwickler und Designer bevorzugen es, alle Fehlermeldungen am Beginn des Formulars zu gruppieren. Der FormErrors Dekorator erlaubt dies zu tun. Standardmäßig hat die erzeugte Liste von Fehlern das folgende Markup:
Man kann eine Vielzahl von Optionen übergeben, um die erzeugte Ausgabe zu konfigurieren:
Der FormErrors Dekorator kann entweder angehängt oder dem Inhalt, dem er angehört, vorangestellt werden. Zend_Form_Decorator_HtmlTagDer HtmlTag Dekorator erlaubt es HTML Tags anzupassen, um Inhalt zu dekorieren; das angepasste Tag wird in der 'tag' Option übergeben, und jede andere Option wird als HTML Attribut für dieses Tag verwendet. Das Tag nimmt standardmäßig an, dass es Blocklevel ist, und ersetzt den Inhalt durch dessen Einbettung in das gegebene Tag. Trotzdem kann eine Platzierung spezifiziert werden um das Tag genauso anzuhängen oder voranzustellen. Zend_Form_Decorator_ImageDer Image Dekorator erlaubt es eine HTML Bildeingabe (<input type="image" ... />) zu erstellen, und es optional in einem anderen HTML Tag darzustellen. Standardmäßig verwendet der Dekorator die 'src' Eigenschaft des Elements als Bildquelle, welche mit der setImage() Methode als Bildquelle gesetzt werden kann. Zusätzlich wird das Label des Elements als 'alt' Attribute verwendet, und imageValue (welches mit den setImageValue() und getImageValue() Zugriffsmethoden des Bildes manipuliert werden kann) wird für den Wert verwendet. Um ein HTML Tag zu spezifizieren, dass das Element einbetten soll, kann entweder die 'tag' Option an den Dekorator übergeben, oder explizit setTag() aufgerufen werden. Zend_Form_Decorator_LabelFormularlemente haben tyischerweise ein Label und der Label Dekorator wird verwendet, um diese Labels darzustellen. Er ruft den FormLabel View Helfer auf und holt das Label des Elements, indem die getLabel() Methode des Elements verwendet wird. Wenn kein Label vorhanden ist, wird es auch nicht darstellt. Standardmäßig werden Labels übersetzt, wenn ein Übersetzungsadapter existiert und eine Übersetzung für das Label existiert. Optional kann die 'tag' Option spezifiziert werden; wenn vorhanden, bettet sie das Label in das Block-Level Tag ein. Wenn die 'tag' Option aber kein Label vorhanden ist, wird das Tag ohne Inhalt dargestellt. Es kann definiert werden, dass die Klasse das Tag mit der 'class' Option verwendet, oder durch Aufruf von setClass(). Zusätzlich können Präfixe und Suffixe für die Verwendung spezifiziert werden, wenn die Elemente angezeigt werden, basierend darauf, ob das Label für ein optionales oder benötigtes Element ist. Übliche Verwendungszwecke würden sein, ein ':' dem Label anzufügen, oder ein '*' um anzuzeigen, dass das Element benötigt wird. Das kann mit den folgenden Optionen und Methoden gemacht werden:
Standardmäßig stellt der Label Dekorator, dem angegebenen Inhalt, voran; es kann die 'placement' Option mit 'append' spezifiziert werden, um es nach dem Inhalt zu platzieren. Zend_Form_Decorator_PrepareElementsFormulare, Anzeigegruppen, und Unterformulare sind Kollektionen von Elementen. Wenn der ViewScript Dekorator verwendet wird, ist es nützlich die Möglichkeit zu haben, das View Objekt, die Übersetzung, und alle komplett qualifizierten Namen (wie sie von der Array Schreibweise der Unterformulare erkannt werden), rekursiv setzen zu können. Der 'PrepareElements' Dekorator kann das für einen erledigen. Typischerweise setzt man ihn als ersten Dekorator in der Liste.
Zend_Form_Decorator_ViewHelperDie meisten Elemente verwenden Zend_View Helfer für die Darstellung und das wird mit dem View Helfer Dekorator getan. Mit ihm kann ein 'helper' Tag spezifiziert werden der explizit den View Helfer setzt, der anzupassen ist; wenn keiner angegeben wird, verwendet er das letzte Segment des Klassennamens des Elements um den Helfer zu ermitteln, und stellt den String 'form' voran: z.B. 'Zend_Form_Element_Text' würde nach einem View Helfer 'formText' schauen. Alle Attribute des angegebenen Elements werden dem View Helfer als Attribute des Elements übergeben. Standardmäßig fügt dieser Dekorator Inhalt hinten an; es kann die 'placement' Option verwendet werden um eine alternative Platzierung zu spezifizieren. Zend_Form_Decorator_ViewScriptManchmal ist es gewünscht, ein View Skript für die Erstellung eigener Elemente zu verwenden; auf diesem Weg hat man eine sehr detailierte Kontrolle über die Elemente, und wandelt das View Skript zu einem Designer um, oder erstellt einfach einen Weg, um Einstellungen zu überladen, die auf Modulen basieren (jedes Modul könnte optional die View Skripte des Elements überladen um seinen eigenen Zwecken zu entsprechen). Der ViewScript Dekorator löst dieses Problem. Der ViewScript Dekorator benötigt eine 'viewScript' Option, entweder angeboten vom Dekorator, oder als Attribut des Elements. Er stellt dann das View Skript als teilweises Skript, was bedeutet, dass jeder Aufruf von ihm, seinen eigenen Geltungsbereich der Variablen hat; keine Variablen von der View werden im Element enthalten sein, ausser denen des Elements selbst. Verschiedene Variablen werden dann bekannt gegeben:
Als Beispiel, kann das folgende Element hergenommen werden:
Dann könne ein View Skript die das folgende existieren:
|
|