Подтвердить что ты не робот

Как добавить атрибуты к метке, сгенерированной с помощью Zend/Form в Zend framework 2

Я добавляю формы на свою страницу, используя Zend/Form.

Я добавляю элементы, определяя их следующим образом:

    $this->add(array(
            'name' => 'value',
            'attributes' => array(
                    'type'  => 'text',
                    'id' => 'value',
                    'autocomplete' => 'off',
                    'placeholder' => 'Cost',
            ),
            'options' => array(
                    'label' => 'Cost',
            ),
    ));

Как вы можете видеть, существует "label" = > "cost" node, это сгенерировало метку для входа с элементом ввода.

Как добавить классы, атрибуты к этой метке?

4b9b3361

Ответ 1

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

$this->add(array(
    'name'       => 'value',
    'attributes' => array(),
    'options'    => array(
        'label_attributes' => array(
            'class'  => 'mycss classes'
        ),
        // more options
    ),        
));

Если это не работает, оставьте мне комментарий. Если он не будет функционировать, использовать этот подход невозможно, так как FormLabel довольно сильно ограничивает validAttributes:

protected $validTagAttributes = array(
    'for'  => true,
    'form' => true,
);

Ответ 2

Это хорошо работает в Zend Framework 2.3:

$this->add(array(
  'name' => 'userName',
  'attributes' => array(
      'type'  => 'text',
      'class' => 'form-control',
      'placeholder' =>'Username',
  ),
  'options' => array(
      'label' => 'Username',
      'label_attributes' => array('class' => 'control-label')
  ),

));

Ответ 3

$element->setOptions(array('label_class' => array('class' => 'control-label')));

Производит такой код:

<label class="control-label">
  <input type="radio" name="option1" id="option1" value="1">
  Option 1
</label>
<label class="control-label">
  <input type="radio" name="option2" id="option2" value="2">
  Option 2
</label>

Я пробовал это. Он работает в Zend Framework One.

Обратите внимание, если вы используете

$element- > setOptions (array ('label_attributes' = > array ('class' = > 'Контроль метки')));

вы получаете нежелательный эффект по какой-либо причине

<label attributes="control-label">
  <input type="radio" name="option1" id="option1" value="1">
  Option 1
</label>

Ответ 4

Для программного подхода на ZF2 + попробуйте следующее:

$element->setOptions(array(
    'label_attributes' => array(
        'style' => 'color:gray;'
    )
));

Вдохновленный ответом Деймона.