簡體   English   中英

ZF2如何在表單fieldset中包裝內容?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM