如何在 ZF2 中启用显示全局标签取消 FormMultiCheckbox?
Posted
技术标签:
【中文标题】如何在 ZF2 中启用显示全局标签取消 FormMultiCheckbox?【英文标题】:How to enable displaying the global label unsing FormMultiCheckbox in ZF2? 【发布时间】:2016-08-25 13:27:29 【问题描述】:我正在使用Zend\Form\Element\MultiCheckbox
和Zend\Form\View\Helper\FormMultiCheckbox
:
MyFieldset.php
// namespace ...;
// use ....;
class MyFieldset extends Fieldset
// ...
public function init()
parent::init();
$this->add(
[
'type' => 'multi_checkbox',
'name' => 'mymulticheckbox',
'options' => [
'label' => _('global label'),
'label_attributes' => [
'class' => 'col-md-3',
],
'value_options' => [
[
'value' => 'foo',
'label' => 'FOO',
],
[
'value' => 'bar',
'label' => 'BAR',
],
[
'value' => 'buz',
'label' => 'BUZ',
],
]
],
]
);
// ...
myform.phml
use Zend\Form\View\Helper\FormMultiCheckbox;
echo $this->formMultiCheckbox($myFieldset->get('mymulticheckbox'), FormMultiCheckbox::LABEL_PREPEND);
它可以工作,但“global label
”没有显示。当我使用Zend\Form\View\Helper\FormElement
时,它会显示出来,但FormMultiCheckbox
似乎忽略了“全局label
”。
如何让FormMultiCheckbox
显示复选框列表的label
?
【问题讨论】:
【参考方案1】:你试过formRow()
。对我来说它有效。这似乎没有在formMultiCheckbox()
中进行管理。见行182-193
,文件zend-form/src/View/Helper/FormRow.php
。
// Multicheckbox elements have to be handled differently as the html standard does not allow nested
// labels. The semantic way is to group them inside a fieldset
if ($type === 'multi_checkbox'
|| $type === 'radio'
|| $element instanceof MonthSelect
|| $element instanceof Captcha
)
$markup = sprintf(
'<fieldset><legend>%s</legend>%s</fieldset>',
$label,
$elementString
);
【讨论】:
感谢您的回答!是的,正如我在问题中所写,我已经使用FormRow
视图助手进行了尝试。不幸的是,它有一个缺点,那就是标签位置无法按需要定义(formRow($field, 'prepend')
不适用于MultiCheckbox
es)。最后,我通过手动完成所有操作来解决问题:'<fieldset><legend>' . $this->translate($myFieldSet->get('mymulticheckbox')->getLabel()) . '</legend>' . $this->formMultiCheckbox($myFieldSet->get('mymulticheckbox'), FormMultiCheckbox::LABEL_PREPEND)
这很丑,但它可以工作。
哦,是的,别无选择。以上是关于如何在 ZF2 中启用显示全局标签取消 FormMultiCheckbox?的主要内容,如果未能解决你的问题,请参考以下文章
ZendDeveloperTools模块没有在ZF2 beta5中显示工具栏
未找到 ZF2 类 PDO,但在 php 配置中启用了 PDO
antd input组件及原生input标签取消自动显示历史记录