ZF2如何包装形式字段集的内容?(ZF2 how to wrap content in form f

2019-08-19 16:06发布

我有一个字段集的形式:

$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>

我怎样才能做到这一点?

Answer 1:

一旦你越要明白,一个Zend\Form\Fieldset不等于一个HTML <fieldset> ! 一个Zend\Form\Fieldset仅仅是一个集合Zend\Form\Element ,通常代表一个实体,你可以从一种形式提供多种实体的数据。

现在,当涉及到渲染的形式,你应该了解的第一件事是几个Zend\Form\View\Helper -班。 您正在使用的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()等,等...



文章来源: ZF2 how to wrap content in form fieldset?