В моей форме у меня установлен переключатель 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?
Я не думаю, что вы можете сделать это с помощью опций. Но вы можете использовать партиалы для шаблона ваших входных данных:
$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, которая содержит ваш элемент ввода формы
Других решений пока нет …