Как использовать существующие декораторы в Zend Framework? - PullRequest
0 голосов
/ 29 ноября 2010

Следующий код:

$this->addElement('text', 'email', array(
    'label' => 'Your email address:',
));

$this->addElement('submit', 'submit', array(
    'label' => 'Sign Guestbook',
));

производит следующий HTML:

<form enctype="application/x-www-form-urlencoded" action="" method="post">
    <dl class="zend_form">
        <dt id="email-label">
            <label for="email" class="optional">Your email address:</label>
        </dt>
        <dd id="email-element">
            <input type="text" name="email" id="email" value="" />
        </dd>

        <dt id="submit-label">
            &#160;
        </dt>
        <dd id="submit-element">
            <input type="submit" name="submit" id="submit" value="Sign Guestbook" />
        </dd>
    </dl>
</form>

Я знаю, я могу написать свои собственные декораторы, но я хотел бы знать, как использовать существующие декораторы, чтобы создать следующий HTML:

<form enctype="application/x-www-form-urlencoded" action="" method="post">
    <div>
        <label for="email" class="optional">Your email address:</label>
        <input type="text" name="email" id="email" value="" class="my_class" />
    </div>

    <div>
        <input type="submit" name="submit" id="submit" value="Sign Guestbook" class="my_class" />
    </div>
</form>

Нет <dl/>, <dt/>, <dd/>, добавлен атрибут class.

Например, я знаю, как удалить окружающие<dl/> tag:

$this->addDecorator('FormElements')
     ->addDecorator('Form');

Возможны ли другие изменения без написания пользовательских декораторов?

Ответы [ 2 ]

1 голос
/ 29 ноября 2010

Это (добавление этого массива в ваш массив параметров, который теперь состоит только из одного параметра метки) должно помочь с вашим полем электронной почты:

'class' => 'my_class',
'decorators' => array(
    'ViewHelper',
    'Errors',
    'Label',
    array('HtmlTag', array('tag' => 'div'))
)

И то же самое без Label - для отправки.

1 голос
/ 29 ноября 2010

Вы можете использовать декоратор HtmlTag и передать, какой тег использовать в качестве параметра.

Все доступные декораторы перечислены здесь: http://framework.zend.com/manual/en/zend.form.standardDecorators.html

...