web-dev-qa-db-ja.com

Zend FrameworkのZend / Formで生成されたラベルに属性を追加する方法2

Zend/Formを使用してページにフォームを追加しています。

次のように要素を定義して要素を追加します。

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

ご覧のとおり、「label」=>「cost」ノードがあります。これにより、入力要素に対応するラベルが生成されました。

このラベルにクラス、属性を追加するにはどうすればよいですか?

24
El Dorado

これを試してみてください、私はこれをテストしたり使用したりしていませんが、ソースによって適切に機能するはずです:

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

これが機能しない場合は、コメントを残してください。機能しない場合、FormLabelvalidAttributesをかなり制限するため、このアプローチを使用することはできません。

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

これは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')
  ),

));
1
speedy32

ZF2 +のプログラムによるアプローチについては、これを試してください:

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

デイモンの答えに触発されました。

0
Dennis
$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>
0
Damon Hogan