-- Bradley Holt <[EMAIL PROTECTED]> wrote
(on Friday, 05 December 2008, 07:09 PM -0500):
> I have a SubForm that and I'd like to set the content of its related dt. This
> is the first part of what I'm currently getting:
>
> <dt> </dt><dd><fieldset id="fieldset-phone"><dl>...
>
> What I want to do is replace the " " above with the word "Phones". It
> appears that there is no setLabel on SubForms like there is on form elements.
> There is a setLegend but that does not affect the dt, it only adds a legend
> element:
>
> <dt> </dt><dd><fieldset id="fieldset-phone"><legend>Phones</legend>
> <dl>...
>
> My guess is that I need to get a reference to the DtDdWrapper decorator and
> set
> an option on that. However, I'm not sure what option(s) I'd use:
>
> $phoneSubForm->getDecorator('DtDdWrapper')->setOption('?', 'Phones');
>
> Is this possible and if so am I going about it all wrong?
The DtDdWrapper actually doesn't have an option for that. You have two
options here.
Short term, create your own drop-in substitute for DtDdWrapper, and push
in this functionality. This is pretty trivial to achieve -- something
like this:
class My_Form_Decorator_DtDdWrapper extends Zend_Form_Decorator_DtDdWrapper
{
public function render($content)
{
$dt = $this->getOption('dt');
if (null === $dt) {
$dt = ' ';
}
return '<dt>' . $dt . '</dt><dd>' . $content . '</dd>';
}
}
Long term, put an issue in the issue tracker to add support for
providing the dt content.
--
Matthew Weier O'Phinney
Software Architect | [EMAIL PROTECTED]
Zend Framework | http://framework.zend.com/