Beschreibung in einem Formular mit dem ZendFramework

Kennt Ihr das Problem, dass Ihr einen Text mitten in einem Formular platzieren wollt? Ich brauche so etwas meist bei AGB-Häkchen oder Newsletter-bestellen-Häkchen. Dort behelfe ich mir derzeit mit der Beschreibung zum Formularelement, bzw. verwende ich im Template zur Ausgabe jedes einzelne Element und schreibe den wichtigen Text einfach in HTML dazwischen. Das ist alles in allem eine nicht sehr befriedigende Lösung und gehört wohl in die Kategorie „Quick-and-dirty“.

„Richtiger“ wäre eine Umsetzung als eigenständiges Formularelement. Ich hab es Note genannt:

/**
 * @category   App
 * @package    App_Form
 * @subpackage App_Form_Element
 * @author     Robert Kummer 
 * @see        http://www.ipunkt.biz
 * @copyright  Creative Commons Attribution 3.0 Unported License
 * @license    http://creativecommons.org/licenses/by/3.0/
 */

/**
 * load Zend_Form_Element_Xhtml
 */
require_once 'Zend/Form/Element/Xhtml.php';

/**
 * A note form element, which uses the shipped view helper Zend_View_Helper_FormNote
 *
 * @category   App
 * @package    App_Form
 * @subpackage App_Form_Element
 * @author     Robert Kummer 
 * @see        http://www.ipunkt.biz
 * @copyright  Creative Commons Attribution 3.0 Unported License
 * @license    http://creativecommons.org/licenses/by/3.0/
 */
class App_Form_Element_Note extends Zend_Form_Element_Xhtml
{
    /**
     * Default view helper to use
     * @var string
     * @see Zend_View_Helper_FormNote
     */
    public $helper = 'formNote';

    /**
     * A non-existing form element is always valid
     *
     * @param mixed $value
     * @param mixed $context
     *
     * @return bool
     *
     * @see Zend_Form_Element::isValid()
     */
    public function isValid($value, $context = null)
    {
        return true;
    }
}

Ich erzeuge also ein Element, welches von Zend_Form_Element_Xhtml abgeleitet ist. Dadurch bekomme ich gleich mehrere Vorteile im Vergleich zu meiner bisherigen QnD-Lösung: Styling geht über das herkömmliche Decorator-Pattern, Hinzufügen/Löschen über die Element-Methoden innerhalb des Formulars/Subformulars, Ausgabe von HTML-Code dank der Nutzung des FormNote-ViewHelpers, komplette Nutzung der ZF-Struktur und den damit verbundenen Möglichkeiten.

Ich verwende standardmäßig den Zend_View_Helper_FormNote, der praktischerweise mitgeliefert wird. Dieser läßt mich kompletten HTML-Code als Value im Element übergeben und ich brauche nicht händisch das Escaping ausschalten (wie in der bisherigen QnD-Lösung).

So verwende ich dieses Element:

[..]
$objNoteElement = new App_Form_Element_Note('note');
$objNote -> setValue('Hier kommt der Text mit Tag.');
$objForm -> addElement($objNote);
[..]

Das erzeugt mit den Standard-Dekorierern folgende HTML-Ausgabe:

   
        Hier kommt der Text mit Tags.
   

So, das war es erstmal zu diesem Thema von mir von hier. Wer das genauso macht oder anders, der kann es ja mal kommentieren.

Meine verwendete ZendFramework-Version ist die 1.10.8.