-- SiCo007 <[EMAIL PROTECTED]> wrote
(on Friday, 28 March 2008, 06:03 AM -0700):
> I'm trying to disable and reset the decorators on my form but the following
> does nothing!
> 
> If I remove disableLoadDefaultDecorators' => true and the line
> $form->setDecorators(array('FormElements', array('HtmlTag', array('tag' =>
> 'div')), 'Form')); then the form displays as normal (i.e. dd tags). If I add
> disableLoadDefaultDecorators' => true, then as expected, nothing shows at
> all. Therefore I added in the form decorators at the bottom and it displays
> the form as normal again.
> 
> $form = new Zend_Form(array('disableLoadDefaultDecorators' => true,
> 'elementDecorators' => array( 
>               'ViewHelper',
>               array('Description', array('tag' => 'div', 'class' => 'help')),
>               'Errors',
>               array('Label'),
>               array('HtmlTag', array('tag' => 'div', 'class' => 'field'))
>               
>           )));
>           $form->setDecorators(array('FormElements', array('HtmlTag', 
> array('tag'
> => 'div')), 'Form'));
> 
> Is this remotely the right way to replace the default decorators or am I
> better off extending the form class outeright?
> 
> How do I pass the decorators I wish to use for the form to the constructor?
> I couldn't see this in the setOptions method.
> 
> Your help would be greatly appreciated as I can't believe it is as hard as I
> am finding it!

To set decorators, you pass a 'decorators' array in the options passed
to the constructor. I'm going to reformat your example above and add the
decorators:

    $form = new Zend_Form(array(
        'elementDecorators' => array(
                'ViewHelper',
                array('Description', array('tag' => 'div', 'class' => 'help')),
                'Errors',
                array('Label'),
                array('HtmlTag', array('tag' => 'div', 'class' => 'field'))
        ),
        'decorators' => array(
            'FormElements',
            array('HtmlTag', array('tag' => 'div')),
            'Form',
        ),
    ));

That's all there is to it. There's no reason to add the
'disableLoadDefaultDecorators' option, as if any decorators are provided
during initializaiton, the default decorators will not be loaded.

-- 
Matthew Weier O'Phinney
PHP Developer            | [EMAIL PROTECTED]
Zend - The PHP Company   | http://www.zend.com/

Reply via email to