字段集中的 zf2 TwbBundle 按钮组
zf2 TwbBundle button group inside fieldset
我正在使用 zf2 和 TwbBundle。我想在各种表单的末尾添加两个按钮作为按钮组。当我直接将它们作为两个对象添加到表单中并设置了按钮组选项时,它呈现得很好。
$this->add(array(
'name' => 'submit',
'type' => 'Button',
'options' => array(
'label' => 'Speichern',
'button-group' => 'group-1',
),
'attributes' => array(
'type' => 'submit',
'class' => 'btn btn-primary btn-lg',
),
));
$this->add(array(
'name' => 'cancel',
'type' => 'Button',
'options' => array(
'label' => 'Abbrechen',
'button-group' => 'group-1',
),
'attributes' => array(
'type' => 'submit',
'class' => 'btn btn-default btn-lg',
),
));
这导致:
<div class="form-group ">
<div class="btn-group">
<button type="submit" name="submit" class="btn btn-primary btn-lg" value="">Speichern</button>
<button type="submit" name="cancel" class="btn btn-default btn-lg" value="">Abbrechen</button>
</div>
</div>
但是一旦我将它们提取到一个可重用的字段集中,每个元素都会包装在它自己的 form-group 元素中,不再呈现为按钮组。
<fieldset>
<div class="form-group ">
<button type="submit" name="form-controls[submit]" class="btn btn-primary btn-lg" value="">Speichern</button>
</div>
<div class="form-group ">
<button type="submit" name="form-controls[cancel]" class="btn btn-default btn-lg" value="">Abbrechen</button>
</div>
</fieldset>
我尝试将 css classes 或按钮组选项添加到表单 class 的字段集中,但没有达到预期的效果。
有人遇到过同样的问题或者可能对如何实现这个有想法吗?
干杯
詹斯
编辑:应要求提供附加代码。字段集的定义方式:
<?php
namespace Application\Form;
use Zend\Form\Fieldset;
class FormControls extends Fieldset
{
public function __construct()
{
parent::__construct('form-controls');
$this->add(array(
'name' => 'submit',
'type' => 'Button',
'options' => array(
'label' => 'Speichern',
'button-group' => 'group-1',
),
'attributes' => array(
'type' => 'submit',
'class' => 'btn btn-primary btn-lg',
),
));
$this->add(array(
'name' => 'cancel',
'type' => 'Button',
'options' => array(
'label' => 'Abbrechen',
'button-group' => 'group-1',
),
'attributes' => array(
'type' => 'submit',
'class' => 'btn btn-default btn-lg',
),
));
}
}
并包括在内:
$this->add(array(
'name' => 'form-controls',
'type' => 'Application\Form\FormControls',
));
您获得额外字段集标记的原因是,您通过字段集添加元素。
class FormControls extends Fieldset
$this->add(array(
'name' => 'form-controls',
'type' => 'Application\Form\FormControls',
));
解决方案是让 (form/fieldset) class 添加:
$this->add(array(
'name' => 'form-controls',
'type' => 'Application\Form\FormControls',
));
扩展一个 (form/fieldset) class 包含:
$this->add(array(
'name' => 'submit',
'type' => 'Button',
'options' => array(
'label' => 'Speichern',
'button-group' => 'group-1',
),
'attributes' => array(
'type' => 'submit',
'class' => 'btn btn-primary btn-lg',
),
));
$this->add(array(
'name' => 'cancel',
'type' => 'Button',
'options' => array(
'label' => 'Abbrechen',
'button-group' => 'group-1',
),
'attributes' => array(
'type' => 'submit',
'class' => 'btn btn-default btn-lg',
),
));
因此您可以拥有可重复使用的按钮。结果将是这样的结构:CoolForm extends ButtonForm extends Form,其中:
- Form 将是 Zend class
- ButtonForm 是 class 定义和添加按钮
- CoolForm 是实际使用的表单,它继承了按钮而没有字段集包裹它们
我正在使用 zf2 和 TwbBundle。我想在各种表单的末尾添加两个按钮作为按钮组。当我直接将它们作为两个对象添加到表单中并设置了按钮组选项时,它呈现得很好。
$this->add(array(
'name' => 'submit',
'type' => 'Button',
'options' => array(
'label' => 'Speichern',
'button-group' => 'group-1',
),
'attributes' => array(
'type' => 'submit',
'class' => 'btn btn-primary btn-lg',
),
));
$this->add(array(
'name' => 'cancel',
'type' => 'Button',
'options' => array(
'label' => 'Abbrechen',
'button-group' => 'group-1',
),
'attributes' => array(
'type' => 'submit',
'class' => 'btn btn-default btn-lg',
),
));
这导致:
<div class="form-group ">
<div class="btn-group">
<button type="submit" name="submit" class="btn btn-primary btn-lg" value="">Speichern</button>
<button type="submit" name="cancel" class="btn btn-default btn-lg" value="">Abbrechen</button>
</div>
</div>
但是一旦我将它们提取到一个可重用的字段集中,每个元素都会包装在它自己的 form-group 元素中,不再呈现为按钮组。
<fieldset>
<div class="form-group ">
<button type="submit" name="form-controls[submit]" class="btn btn-primary btn-lg" value="">Speichern</button>
</div>
<div class="form-group ">
<button type="submit" name="form-controls[cancel]" class="btn btn-default btn-lg" value="">Abbrechen</button>
</div>
</fieldset>
我尝试将 css classes 或按钮组选项添加到表单 class 的字段集中,但没有达到预期的效果。
有人遇到过同样的问题或者可能对如何实现这个有想法吗?
干杯 詹斯
编辑:应要求提供附加代码。字段集的定义方式:
<?php
namespace Application\Form;
use Zend\Form\Fieldset;
class FormControls extends Fieldset
{
public function __construct()
{
parent::__construct('form-controls');
$this->add(array(
'name' => 'submit',
'type' => 'Button',
'options' => array(
'label' => 'Speichern',
'button-group' => 'group-1',
),
'attributes' => array(
'type' => 'submit',
'class' => 'btn btn-primary btn-lg',
),
));
$this->add(array(
'name' => 'cancel',
'type' => 'Button',
'options' => array(
'label' => 'Abbrechen',
'button-group' => 'group-1',
),
'attributes' => array(
'type' => 'submit',
'class' => 'btn btn-default btn-lg',
),
));
}
}
并包括在内:
$this->add(array(
'name' => 'form-controls',
'type' => 'Application\Form\FormControls',
));
您获得额外字段集标记的原因是,您通过字段集添加元素。
class FormControls extends Fieldset
$this->add(array(
'name' => 'form-controls',
'type' => 'Application\Form\FormControls',
));
解决方案是让 (form/fieldset) class 添加:
$this->add(array(
'name' => 'form-controls',
'type' => 'Application\Form\FormControls',
));
扩展一个 (form/fieldset) class 包含:
$this->add(array(
'name' => 'submit',
'type' => 'Button',
'options' => array(
'label' => 'Speichern',
'button-group' => 'group-1',
),
'attributes' => array(
'type' => 'submit',
'class' => 'btn btn-primary btn-lg',
),
));
$this->add(array(
'name' => 'cancel',
'type' => 'Button',
'options' => array(
'label' => 'Abbrechen',
'button-group' => 'group-1',
),
'attributes' => array(
'type' => 'submit',
'class' => 'btn btn-default btn-lg',
),
));
因此您可以拥有可重复使用的按钮。结果将是这样的结构:CoolForm extends ButtonForm extends Form,其中:
- Form 将是 Zend class
- ButtonForm 是 class 定义和添加按钮
- CoolForm 是实际使用的表单,它继承了按钮而没有字段集包裹它们