Как включить отображение глобальной метки без формы FormMultiCheckbox в ZF2?
Я использую 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
);