24

我正在使用 Zend/Form 向我的页面添加表单。

我通过如下定义来添加元素:

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

如您所见,有一个 'label' => 'cost' 节点,这会生成一个与输入元素一起使用的标签。

如何向此标签添加类、属性?

4

4 回答 4

49

请试试这个,我没有测试或使用过这个,但是从源代码来看它应该可以正常工作:

$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,
);
于 2013-02-07T08:27:16.407 回答
1

这在 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')
  ),

));
于 2014-10-03T12:45:45.213 回答
0
$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' => 'control-label')));

由于某种原因,您会得到不良影响

<label attributes="control-label">
  <input type="radio" name="option1" id="option1" value="1">
  Option 1
</label>
于 2014-04-30T23:58:48.247 回答
0

对于 ZF2+ 的编程方法,请尝试以下操作:

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

受到达蒙回答的启发。

于 2017-10-24T20:14:33.530 回答