Laravelでradioボタン生成の際にid属性を付与する
Laravelでラジオボタンを生成する際ですが、
http://laravel4.kore1server.com/docs/html#checkboxes-and-radio-buttons
こちらのドキュメントにもある通り、
// チェックボックスの生成 echo Form::checkbox('name', 'value'); // ラジオボタンの生成 echo Form::radio('name', 'value');
とすることで、
<input name="name" value="value" type="radio"> <input name="name" value="value" type="checkbox">
このようなHTMLが生成されます。簡単ですね!
で、ここで悩んだのが、
http://laravel4.kore1server.com/docs/html#labels
このラベルとの組み合わせで使いたい場合です。
男女の選択のラジオボタンがあって、ラベルが付いていてクリックでチェックが付けれる
というような要件を満たすためには、ラジオボタン(ないしはチェックボックス)に
id属性が付与されている必要があります。
そこで、ラジオボタンのドキュメント部分には書いてないのですが、
ラベルのドキュメント部分に
追加のHTML要素の指定
echo Form::label('email', 'E-Mail Address', array('class' => 'awesome'));
というのがありまして、ラベル生成時の最後の引数に、
配列で渡してあげることで、属性が付けられる模様・・・
ということで、
// ラジオボタンの生成 echo Form::radio('name', 'value', array('id'=>'hoge'));
という風に渡してみたんですが、属性はつかず。。。
ただ、オプションとして渡せそうだしなーーということで、
Laravelフレームワーク内のソースコードを追っていくとありました!
/vendor/laravel/framework/src/Illuminate/Html/FormBuilder.php : 500行目
public function radio($name, $value = null, $checked = null, $options = array())
{
if (is_null($value)) $value = $name;
return $this->checkable('radio', $name, $value, $checked, $options);
}
はいー結果、第4引数にオプションが渡せる形でした!
(第3引数はデフォルトでチェックをONにするかどうかのフラグ)
にゃので・・・
// ラジオボタンの生成 echo Form::radio('name', 'value', false ,array('id'=>'hoge'));
とすることで、
<input name="name" value="value" type="radio" id="hoge">
のようにid属性の付与ができましたとさ!!
一応上であげた、
男女の選択のラジオボタンがあって、ラベルが付いていてクリックでチェックが付けれる
のサンプルも出してみると、
// ラジオボタンの生成(男) echo Form::radio('sex', '男' ,false , array('id' => 'men')); // ラベルの生成(男) echo Form::label('men', '男'); // ラジオボタンの生成(女) echo Form::radio('sex', '女' ,false , array('id' => 'women')); // ラベルの生成(女) echo Form::label('women', '女');
とすることで、
<input id="men" name="sex" type="radio" value="男"><label for="men">男</label> <input id="women" name="sex" type="radio" value="女"><label for="women">女</label>
となり、期待通りの出力ができました^^