読者です 読者をやめる 読者になる 読者になる

FuelPHPのForm::radioとラベルの関連付け

FuelPHPの想定バージョンは1.7

Form::radioにラベルを関連づける為のメモ。

Form::radioでradioボタンを作成し、そこにラベルを関連づけしようとすると、Form::labelはidにformのprefixが付くのに対し、Form::radioはprefixが付かないので若干ややこしい。

対応案1

Form::radioでprefix付きのidを指定する。
(label側のidにprefixが付くのを見越し、radio側のidを付けてしまう)

<?= Form::radio('status', 1, Input::post('status') != '0', array('id' => 'form_status_1')) ?>
<?= Form::label('有効', 'status_1') ?>
<?= Form::radio('status', 0, Input::post('status') == '0', array('id' => 'form_status_0')) ?>
<?= Form::label('無効', 'status_0') ?>

生成されるHTML

<input id="form_status_1" name="status" value="1" checked="checked" type="radio" />
<label for="form_status_1">有効</label>
<input id="form_status_0" name="status" value="0" type="radio" />
<label for="form_status_0">無効</label>

対応案2

prefixを自動的に付けないようにする。
(idへのprefixの自動付与をやめ、radioとlabelで同じidを指定する)

app/config/form.php
<?php
return array(
    'auto_id_prefix' => ''
);

<?= Form::radio('status', 1, Input::post('status') != '0', array('id' => 'status_1')) ?>
<?= Form::label('有効', 'status_1') ?>
<?= Form::radio('status', 0, Input::post('status') == '0', array('id' => 'status_0')) ?>
<?= Form::label('無効', 'status_0') ?>

生成されるHTML

<input id="status_1" name="status" value="1" checked="checked" type="radio" />
<label for="status_1">有効</label>
<input id="status_0" name="status" value="0" type="radio" />
<label for="status_0">無効</label>