WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
Laravel
システム開発
[Laravel]checkboxで選択された複数の値をカンマ区切りで保存し利用する
システム開発担当のTFです。
やり方
- checkboxで複数の値をPOSTする
- POSTされた値を、implode 関数でカンマ区切りの文字列に変換し保管する
- 配列に戻す際は、explode 関数を使う
- edit画面では、in_arrayで選択された値か判定を行う
サンプル
<form method="post" action="{{ route('test.store') }}">
@csrf
@method('POST')
<div>
<input type="checkbox" id="id_1" name="id[]" value="1" />
<label for="id_1">ID: 1</label>
</div>
<div>
<input type="checkbox" id="id_2" name="id[]" value="2" />
<label for="id_2">ID: 2</label>
</div>
<div>
<input type="checkbox" id="id_3" name="id[]" value="3" />
<label for="id_3">ID: 3</label>
</div>
<button type="submit">送信</button>
</form>
public function store(Request $request)
{
// idの配列からカンマ区切りの文字列を作成し保存
$ids = implode(",", $request->id);
$test = new Test();
$test->ids = $ids;
$test->save();
}
public function edit(Test $test)
{
// カンマ区切りの文字列からidの配列を作成
$id = explode(",", $test->ids);
return view('test.edit', compact('test', 'id'));
}
<form method="post" action="{{ route('test.update', $test->id) }}" >
@csrf
@method('PUT')
{{-- 選択されたidにcheckedを付ける --}}
@php
$id = old('id', $id);
@endphp
<div>
<input type="checkbox" id="id_1" name="id[]" value="1" @if( in_array(1, $id) ) checked @endif />
<label for="id_1">ID: 1</label>
</div>
<div>
<input type="checkbox" id="id_2" name="id[]" value="2" @if( in_array(2, $id) ) checked @endif />
<label for="id_2">ID: 2</label>
</div>
<div>
<input type="checkbox" id="id_3" name="id[]" value="3" @if( in_array(3, $id) ) checked @endif />
<label for="id_3">ID: 3</label>
</div>
<button type="submit">送信</button>
</form>