Symfonyでチェックボックス・ラジオボタンを作成する方法を完全ガイド!初心者でもわかるフォーム処理入門
生徒
「Symfonyでチェックボックスやラジオボタンを使ったフォームって作れるんですか?」
先生
「もちろん作れますよ。チェックボックスやラジオボタンは、Symfonyのフォームでよく使われる入力項目です。」
生徒
「どうやって設定するんですか?難しそうに感じます…。」
先生
「大丈夫です。SymfonyのChoiceTypeやCheckboxTypeを使えばとても簡単に作れます。順番に説明しますね。」
1. チェックボックス・ラジオボタンとは?
Symfonyでフォームを作成する際に欠かせない入力方法が「チェックボックス」と「ラジオボタン」です。 チェックボックスとは、複数の選択肢から複数を選べる入力項目のことで、 例えば「メールを受け取る/受け取らない」といったオン・オフの選択にも使われます。 一方でラジオボタンは、複数の選択肢の中から一つだけ選ぶ入力方式で、 性別選択や支払い方法の選択などによく利用されます。
これらはSymfonyのフォーム機能の中でも特に使用頻度が高く、 フロントエンドのセレクトボックスよりも直感的に選べるため、多くのWebアプリで活用されています。 「選択肢の表示方法」「複数選択の有無」で使い分けることが大切です。
2. Symfonyでチェックボックスを作成する方法(CheckboxType)
Symfonyでチェックボックスを作成する方法はとても簡単で、 CheckboxTypeをフォームに追加するだけで実現できます。 チェックボックスは「オンにするかどうか」という単純な入力に向いています。
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
$builder->add('agree', CheckboxType::class, [
'label' => '利用規約に同意する',
'required' => false,
]);
フォームで表示されると「利用規約に同意する」という項目がチェックボックスとして表示されます。
requiredをfalseにすると、チェックしなくても送信できる設定になります。
Webサービスでの会員登録などにも使われるとても代表的な入力項目です。
3. Symfonyでラジオボタンを作成する方法(ChoiceType + expanded)
ラジオボタンを作る場合はChoiceTypeを使用します。 ここで重要なのが、expandedとmultipleという2つの設定です。
- expanded: true → ラジオボタンやチェックボックスとして表示する
- multiple: false → 一つだけ選択できる(ラジオボタン)
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
$builder->add('gender', ChoiceType::class, [
'label' => '性別',
'choices' => [
'男性' => 'male',
'女性' => 'female',
'回答しない' => 'none'
],
'expanded' => true,
'multiple' => false,
]);
expanded => trueにしているため、選択肢がボタンのように表示されます。
また、multiple => falseのため、選べるのはひとつだけになります。
これがラジオボタンの基本的な仕組みです。
4. チェックボックス風の複数選択にする(ChoiceType + multiple)
ラジオボタンと似ていますが、複数選択可能なチェックボックスを作る場合は、 multiple を trueにします。 これにより、ユーザーは複数の選択肢を同時に選べます。
$builder->add('hobbies', ChoiceType::class, [
'label' => '趣味を選んでください',
'choices' => [
'読書' => 'reading',
'スポーツ' => 'sports',
'音楽' => 'music',
],
'expanded' => true,
'multiple' => true,
]);
ラジオボタンと違い、複数選択が可能になり、見た目はチェックボックスが複数並びます。 「タグ選択」「オプション設定」「興味の分野を複数選ぶ」などのフォームでよく使われます。
5. Twigテンプレートでの表示方法
SymfonyのフォームはTwigテンプレートととても相性がよく、描画も簡単です。 以下のように書くと、チェックボックスやラジオボタンが自動で整形されて表示されます。
{{ form_start(form) }}
{{ form_row(form.agree) }}
{{ form_row(form.gender) }}
{{ form_row(form.hobbies) }}
{{ form_end(form) }}
form_row()を使うと、ラベル・入力欄・エラーメッセージがセットで表示されるため、
初心者でも整ったフォームが作れます。
6. チェックボックス・ラジオボタンを使うときの注意点
入力ミスや不正な値を防ぐためにも、Symfonyでは「定義されていない値は受け付けない」仕様になっています。 そのため、ChoiceTypeの値は必ずサーバ側で定義しておくことが大切です。
また、ラジオボタンやチェックボックスはユーザーが押しやすく、 誤って操作することも多いため、見やすいラベルを付けることや、 適切な初期値を設定することも使いやすいフォームを作るポイントになります。