Hi, I'm wondering could somebody help with this, in reference to Zend_Form
and decorators.

Basically I'm trying to add a css class to a fieldset element.

My forms are created like Pádraic Bradys in his blog application tutorial,
http://blog.astrumfutura.com/archives/360-Example-Zend-Framework-Blog-Application-Tutorial-Part-6-Introduction-to-Zend_Form-and-Authentication-with-Zend_Auth.html


with the decorator:

protected $_standardGroupDecorator = array(
        'FormElements',
        array('HtmlTag', array('tag' => 'ul')),
        'Fieldset'
    );

How do i add a class "elements-group" to the fieldset without losing the
unordered list within the fieldset?

I've tried all sorts, if i do:

    protected $_buttonGroupDecorator = array(
        'FormElements',
        array('HtmlTag', array('tag' => 'ul')),
        'Fieldset' => array('HtmlTag', array('tag'=>'fieldset', 'class' =>
'elements-group'))
    );


the fieldset will have the class "elements-goup" but the unordered list
disappears, i need to the ul within the fieldset.


There's longer description below, any help would be appreciated.





---------------
---------------
---------------
---------------



I have all my decorators in properties and then add them to the elements on
the fly to produce element lists within fieldsets, here are the properties:


    protected $_standardElementDecorator = array(
        'Errors',
        'ViewHelper',
        'Description',
        array('Label'),
        array('HtmlTag', array('tag'=>'li', 'class' => 'form-row'))
    );

    protected $_standardElementFileDecorator = array(
        'Errors',
        'File',
        'Description',
        array('Label'),
        array('HtmlTag', array('tag'=>'li'))
    );

    protected $_buttonElementDecorator = array(
        'ViewHelper'
    );

    protected $_standardGroupDecorator = array(
        'FormElements',
        array('HtmlTag', array('tag' => 'ul')),
        'Fieldset'
    );

    protected $_buttonGroupDecorator = array(
        'FormElements',
        'Fieldset' => array('HtmlTag', array('tag'=>'fieldset', 'class' =>
'submit-row'))
    );

    protected $_noElementDecorator = array(
        'ViewHelper'
    );


and in the constructor:



    public function __construct($options = null)
    {
        parent::__construct(array('disableLoadDefaultDecorators' => true));

        $this->setMethod('post');
        $this->setAttrib('accept-charset', 'UTF-8');
        $this->setDecorators(array(
            'Description',
            'Errors',
            'FormElements',
            'Form'
        ));
    }



so creating a form:




        $this->setName('formId');
        $this->addElement('text', 'name', array(
            'decorators' => $this->_standardElementDecorator,
            'label' => 'Name',
            'required' => true
        ));
        $this->addDisplayGroup(array('name'), 'elementGroup',
            array(
                'decorators' => $this->_standardGroupDecorator
        ));
        $this->addElement('submit', 'submit',
            array(
                'decorators' => $this->_buttonElementDecorator,
                'label' => 'Save',
                'ignore' => true
        ));
        $this->addDisplayGroup(array('submit'), 'submitGroup',
            array(
                'decorators' => $this->_buttonGroupDecorator
        ));


will produce the following markup :

<form id="formId" method="post" accept-charset="UTF-8" action="/to/action">
    <fieldset id="fieldset-elementGroup">
        <ul>
            <li class="form-row">
                <label for="name" class="required">Name</label>
                <input type="text" name="name" id="name" value="" />
            </li>
        </ul>
    </fieldset>
    <fieldset class="submit-row">
        <input type="submit" name="submit" id="submit" value="Save" />
    </fieldset>
</form>


I want to add a class to the fieldset display group. The submit row has a
class "submit-row" which is done by using the decorator:

    protected $_buttonGroupDecorator = array(
        'FormElements',
        'Fieldset' => array('HtmlTag', array('tag'=>'fieldset', 'class' =>
'submit-row'))
    );


but my elements need to be wrapped in an unordered list. So is use the
display groupd decorator:


protected $_standardGroupDecorator = array(
        'FormElements',
        array('HtmlTag', array('tag' => 'ul')),
        'Fieldset'
    );


So, how do i add a class to the fieldset?

I've tried all sorts, if i do the following, which i though should work, i
lose the unordered list:

    protected $_buttonGroupDecorator = array(
        'FormElements',
        array('HtmlTag', array('tag' => 'ul')),
        'Fieldset' => array('HtmlTag', array('tag'=>'fieldset', 'class' =>
'elements-row'))
    );


<form id="formId"method="post" accept-charset="UTF-8" action="/to/action">
    <fieldset class="elements-row">
        <li class="form-row">
            <label for="name" class="required">Name</label>
            <input type="text" name="name" id="name" value="" />
        </li>
    </fieldset>
    <fieldset class="submit-row">
        <input type="submit" name="submit" id="submit" value="Save" />
    </fieldset>
</form>



I'm sorry about the long post littered with snippits, any help would be
appreciated.





-- 
View this message in context: 
http://www.nabble.com/Zend_Form---decorators%3A-adding-a-css-class-to-a-fieldset---tp21839519p21839519.html
Sent from the Zend Framework mailing list archive at Nabble.com.

Reply via email to