2016-11-01 6 views
0

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

$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?

ответ

1

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

$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> 

Зенда переходит Partials в $ элемент, который содержит элемент ввода формы