Der Dekorierer „Zend_Form_Decorator_Label“, für die Beschriftung eines Formularelementes, ermöglichte es schon immer, ein umschließendes HTML-Element festzulegen. Dafür wird wiederum der Dekorierer „Zend_Form_Decorator_HtmlTag“ verwendet.
Es ist auch möglich dem „label“-Element eine Klasse zu übergeben:HTML-Code:<form enctype="application/x-www-form-urlencoded" action="" method="post"> <dl class="zend_form"> <dt> <label for="foo" class="optional">Foo</label> </dt> <dd> <input type="text" name="foo" id="foo" value="" /> </dd> </dl> </form>
PHP-Code:$form->getElement('foo')->getDecorator('label')->setOption('class', 'label-class');
Etwas umständlicher wurde es, wenn man dem umschließenden HTML-Element von „label“, also dem „dt“-Element, eine Klasse zuweisen wollte:HTML-Code:<form enctype="application/x-www-form-urlencoded" action="" method="post"> <dl class="zend_form"> <dt> <label for="foo" class="label-class optional">Foo</label> </dt> <dd> <input type="text" name="foo" id="foo" value="" /> </dd> </dl> </form>
PHP-Code:$form->addElement(
'text',
'foo',
array(
'label' => 'Foo',
'decorators' => array(
'ViewHelper',
'Errors',
array(
// Dekorierername
'Description',
// Dekorierer-Optionen
array(
'tag' => 'p',
'class' => 'description',
),
),
array(
// Dekorierer-Name
array(
'element' => 'HtmlTag',
),
// Dekorierer-Optionen
array(
'tag' => 'dd',
),
),
array(
// Dekorierer-Name
array(
'closeDt' => 'HtmlTag',
),
// Dekorierer-Optionen
array(
'tag' => 'dt',
'closeOnly' => true,
'placement' => 'prepend'
),
),
array(
// Dekorierer-Name
'Label',
// Dekorierer-Optionen
array(
'class' => 'label-class',
),
),
array(
// Dekorierer-Name
array(
'openDt' => 'HtmlTag',
),
// Dekorierer-Optionen
array(
'tag' => 'dt',
'openOnly' => true,
'class' => 'tag-class',
),
),
),
)
);
Mit der Version 1.11.4 des Zend Frameworks erhält der Dekorierer „Zend_Form_Decorator_Label“ eine neue Methode: „setTagClass“.HTML-Code:<form enctype="application/x-www-form-urlencoded" action="" method="post"> <dl class="zend_form"> <dt class="tag-class"> <label for="foo" class="label-class optional">Foo</label> </dt> <dd> <input type="text" name="foo" id="foo" value="" /> </dd> </dl> </form>
Mögliche Verwendung 1:
Mögliche Verwendung 2:PHP-Code:$form->addElement(
'text',
'foo',
array(
'label' => 'Foo',
)
);
$form->getElement('foo')->getDecorator('label')->setOption('class', 'label-class')
->setTagClass('tag-class'); // Neu!
Mögliche Verwendung 3:PHP-Code:$form->addElement(
'text',
'bar',
array(
'label' => 'Bar',
'decorators' => array(
'ViewHelper',
'Errors',
array(
// Dekorierer-Name
'Description',
// Dekorierer-Optionen
array(
'tag' => 'p',
'class' => 'description',
),
),
array(
// Dekorierer-Name
'HtmlTag',
// Dekorierer-Optionen
array(
'tag' => 'dd',
),
),
array(
// Dekorierer-Name
'Label',
// Dekorierer-Optionen
array(
'tag' => 'dt',
'class' => 'label-class',
'tagClass' => 'tag-class', // Neu!
),
),
),
)
);
PHP-Code:$form->addElement(
'text',
'baz',
array(
'label' => 'Baz',
)
);
$form->getElement('baz')->clearDecorators()
->addDecorator('ViewHelper')
->addDecorator('Errors')
->addDecorator(
// Dekorierer-Name
'Description',
// Dekorierer-Optionen
array(
'tag' => 'p',
'class' => 'description',
)
)
->addDecorator(
// Dekorierer-Name
'HtmlTag',
// Dekorierer-Optionen
array(
'tag' => 'dd',
)
)
->addDecorator(
// Dekorierer-Name
'Label',
// Dekorierer-Optionen
array(
'tag' => 'dt',
'class' => 'label-class',
'tagClass' => 'tag-class', // Neu!
)
);
Das Ganze funktioniert natürlich auch mit anderen HTML-Elementen als „dl“, „dt“ und „dd“.HTML-Code:<form enctype="application/x-www-form-urlencoded" action="" method="post"> <dl class="zend_form"> <dt id="foo-label" class="tag-class"> <label for="foo" class="label-class optional">Foo</label> </dt> <dd id="foo-element"> <input type="text" name="foo" id="foo" value="" /> </dd> <dt id="bar-label" class="tag-class"> <label for="bar" class="label-class optional">Bar</label> </dt> <dd> <input type="text" name="bar" id="bar" value="" /> </dd> <dt id="baz-label" class="tag-class"> <label for="baz" class="label-class optional">Baz</label> </dt> <dd> <input type="text" name="baz" id="baz" value="" /> </dd> </dl> </form>
Vorschlag:
Wer noch Ergänzungen hat oder einen Fehler findet, der schreibt diese entweder als Antwort zu diesem Beitrag oder schickt mir eine private Nachricht, ich werde dann die Übersicht erweitern bzw. berichtigen.
Wenn es um Fragen der Einbindung in die eigene Anwendung geht, dann macht bitte einen eigenen Beitrag im entsprechenden Unterforum auf - wir wollen doch das hier nicht unnötig „zumüllen“.
Danke.



LinkBack URL
About LinkBacks



Zitieren
Lesezeichen