Zend/Formを使用してページにフォームを追加しています。
次のように要素を定義して要素を追加します。
$this->add(array(
'name' => 'value',
'attributes' => array(
'type' => 'text',
'id' => 'value',
'autocomplete' => 'off',
'placeholder' => 'Cost',
),
'options' => array(
'label' => 'Cost',
),
));
ご覧のとおり、「label」=>「cost」ノードがあります。これにより、入力要素に対応するラベルが生成されました。
このラベルにクラス、属性を追加するにはどうすればよいですか?
これを試してみてください、私はこれをテストしたり使用したりしていませんが、ソースによって適切に機能するはずです:
$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,
);
これは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')
),
));
ZF2 +のプログラムによるアプローチについては、これを試してください:
$element->setOptions(array(
'label_attributes' => array(
'style' => 'color:gray;'
)
));
デイモンの答えに触発されました。
$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>