Как установить класс для контейнера набора переключателей в форме ZF2?

В моей форме у меня установлен переключатель foo определяется следующим образом:

$this->add(
[
'type' => 'radio',
'name' => 'foo',
'options' => [
'label' => 'foo',
'value_options' => [
[
'value' => Foo::BAR,
'label' => 'bar'
],
[
'value' => Foo::BUZ,
'label' => 'buz'
]
],
'label_attributes' => [
'class' => 'col-md-12',
]
],
'attributes' => [
'class' => 'field-foo'
]
]);

В скрипте вида это называется так:

$this->formRow($myFieldset->get('foo'));

Итак, я получаю этот HTML:

<fieldset>
<legend>foo</legend>
<label class="col-md-12">
<input type="radio" value="bar" class="field-foo" name="my_fieldset[foo]">bar
</label>
<label class="col-md-12">
<input type="radio" value="buz" class="field-foo" name="my_fieldset[foo]">buz
</label>
</fieldset>

Теперь я хочу пометить этот переключатель как необходимый. За input[type="text"] поля, которыми я управляю через label:

label.required:before {
content: '* ';
color: #ff0000;
}

В этом случае мне нужно получить доступ к legend или, по крайней мере, fieldset, чтобы определить

fieldset > legend.required:before, /*or*/
fieldset.required > legend:before {
content: '* ';
color: #ff0000;
}

Как это сделать? Как установить класс для fieldset / legend элемент переключателей установлен в Zend Framework 2?

0

Решение

Я не думаю, что вы можете сделать это с помощью опций. Но вы можете использовать партиалы для шаблона ваших входных данных:

$this->formRow($myFieldset->get('foo'), null, null, 'path/to/partials/some-partial-file.phtml');

В этом файле вы можете настроить способ визуализации вашего ввода, добавив то, что вам нужно:

<?php
/**
* @var \Zend\Form\Element\Radio $element
*/

$element_options = $element->getValueOptions();
$element_attributes = $element->getAttributes();
$element_value = $element->getValue();
?>
<fieldset>
<legend><?php echo $element->getLabel(); ?> * </legend>
<?php foreach($element_options as $key => $value) { ?>

<label class="col-md-12">
<input type="radio" value="<?php echo $value['value']; ?>" class="field-foo" name="<?php echo $element_attributes['name']; ?>[]"><?php echo $value['value']; ?>
</label>
<?php } ?>
</fieldset>

Zend передает частям переменную $ element, которая содержит ваш элемент ввода формы

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]