5

Vì mục đích tạo kiểu, tôi cần phải mở một mã mở <div> ở đầu một phần tử và đóng thẻ </div> ở cuối phần tử khác. Nhìn qua các tài liệu cho HtmlDecorator tôi không thể tìm ra cách để làm cho nó đúng, hoặc nếu điều này thậm chí là trang trí bên phải để sử dụng. Có vẻ như lãng phí khi phải tạo ra trang trí của riêng tôi chỉ đơn giản là để đạt được điều này.Gắn thẻ HTML sắp xếp hoặc sắp xếp cho phần tử biểu mẫu Zend

Trả lời

16

Trên yếu tố mà bạn muốn thêm một <div>, thêm trang trí này:

array(
    array('openDiv' =>'HtmlTag'), 
    array('tag' => 'div', 'openOnly' => true) 
) 

Trên yếu tố mà bạn muốn thêm một </div >, thêm trang trí này:

array(
    array('closeDiv' =>'HtmlTag'), 
    array('tag' => 'div', 'closeOnly' => true) 
) 
+0

Đây chính xác là những gì tôi đang tìm kiếm trong trường hợp cụ thể này, cảm ơn bạn! – ashurexm

7

Có vẻ như bạn có thể sử dụng display group với trang trí HtmlTag.

Cái gì như:

$form = new Zend_Form(); 

$form->addElement('text', 'elt1', array(
    'label' => 'Element 1', 
)); 
$form->addElement('text', 'elt2', array(
    'label' => 'Element 2', 
)); 

$form->addDisplayGroup(array('elt1', 'elt2'), 'myDisplayGroup'); 
$group = $form->getDisplayGroup('myDisplayGroup'); 

$group->setDecorators(array(
    'FormElements', 
    array('HtmlTag', array('tag' => 'div', 'class' => 'myClass')) 
)); 

này tạo ra HTML như sau:

<form method="post" action="" enctype="application/x-www-form-urlencoded"> 
    <dl class="zend_form"> 
     <div class="myClass"> 
      <dt id="elt1-label"><label class="optional" for="elt1">Element 1</label></dt> 
      <dd id="elt1-element"><input type="text" value="" id="elt1" name="elt1"></dd> 
      <dt id="elt2-label"><label class="optional" for="elt2">Element 2</label></dt> 
      <dd id="elt2-element"><input type="text" value="" id="elt2" name="elt2"></dd> 
     </div> 
    </dl> 
</form> 

Tất nhiên, gây nhiễu một <div> tag bên trong tất cả những gì <dl>, <dt> và <dd> madness tạo ra đánh dấu không hợp lệ, nhưng tôi đoán rằng bạn đang chỉ định các trang trí khác nhau cho các phần tử biểu mẫu của bạn để e <div> quấn bạn mong muốn cuối cùng sẽ hợp lệ.

Cũng đáng chú ý cho các thao tác đánh dấu tổng quát hơn là AnyMarkup Decorator.

+0

DavidW, Cảm ơn bạn vì một ví dụ tuyệt vời. Tôi hoàn toàn quên mất việc sử dụng các nhóm hiển thị. – ashurexm

+0

Niềm vui của tôi ;-) –

Các vấn đề liên quan