[英]ZF2 how to wrap content in form fieldset?
我有字段集的表單:
$formConfig = array(
'fieldsets' => array(
...
);
);
$factory = new Zend\Form\Factory();
$form = $factory->createForm($formConfig);
echo $this->form($form);
它呈現如下:
<form>
<fieldset>
<legend>Fieldset label</legend>
<label><span>Elem 1</span><input type="text" name="f1[el1]" /></label>
<label><span>Elem 2</span><input type="text" name="f1[el2]" /></label>
<label><span>Elem 3</span><input type="text" name="f1[el3]" /></label>
</fielset>
</form>
問題是我需要在傳奇之后包裝內容:
<form>
<fieldset>
<legend>Fieldset label</legend>
<div class="wrapper">
<label><span>Elem 1</span><input type="text" name="f1[el1]" /></label>
<label><span>Elem 2</span><input type="text" name="f1[el2]" /></label>
<label><span>Elem 3</span><input type="text" name="f1[el3]" /></label>
<div>
</fielset>
</form>
我怎樣才能做到這一點?
再一次,您需要了解Zend\\Form\\Fieldset
不等於HTML <fieldset>
! Zend\\Form\\Fieldset
只是Zend\\Form\\Element
的集合,通常代表一個實體,您可以為一個實體提供來自一個Form的數據。
現在,在渲染表單時,您應該了解的第一件事是幾個Zend\\Form\\View\\Helper
-Classes。 您正在使用的form()
視圖助手,它會自動將所有Zend\\Form\\Element
使用formRow()
所有和Zend\\Form\\Fieldset
使用formCollection()
但你不想那樣做!
想要您喜歡的輸出時,您需要自己渲染表單。 像這樣的東西可能是你的視圖模板:
<?=$this->form()->openTag($form);?>
<fieldset>
<div class="wrapper">
<?=$this->formRow($form->get('f1')->get('el1'));?>
<?=$this->formRow($form->get('f1')->get('el2'));?>
<?=$this->formRow($form->get('f1')->get('el3'));?>
</div>
</fieldset>
<?=$this->form()->closeTag();?>
現在,這已經有了一些安慰,因為你正在使用formRow()
。 你也可以拆分每個表格行,然后采取非常詳細的方式:
<label>
<span><?=$this->formLabel($form->get('f1')->get('el1'));?></span>
<?=$this->formInput($form->get('f1')->get('el1'));=>
<?=$this->formElementErrors($form->get('f1')->get('el1'));?>
</label>
即使在那里, formInput()
仍然是一個魔術,它衍生出像formText()
, formSelect()
, formTextarea()
等等......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.