2010-11-29 3 views
0

следующего кода:Как использовать существующие декораторы в Zend Framework?

$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/> тег:

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

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

ответ

1

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

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

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

+0

Спасибо. Кажется логичным :) – prostynick 2010-11-29 13:52:35

Смежные вопросы