はじめに
laravelなど使っているとフォームを書くことが結構な頻度である。
そこでインプットタグ以外にセレクトタグ(プルダウン)を書くこともまあある。
これまでに書いていたプルダウンだと少し実務的ではないと考えたので、今回は実務でも使えそうなプルダウンを書いていきます。
これまでに書いていた実務的ではないプルダウン
<select class="form-control" id="part_id" name="part">
<option value="">選択してください</option>
<option value="胸">胸</option>
<option value="脚">脚</option>
<option value="肩">肩</option>
<option value="背中">背中</option>
<option value="二頭">二頭</option>
<option value="三頭">三頭</option>
<option value="腹">腹</option>
</select>
optionタグをそれぞれ書く形ですね。
チュートリアルだったりでやる形はだいたいこれです。
ただこれだと数が多くなったときにコードの可読性が下がってしまうため実務的とは言えないですね。
configを使って書くプルダウン
少し実務的なやり方を紹介します。
configファイルにプルダウンの型を予め用意してあげてそれをViewで使ってあげる形です。
config/pulldown.phpを用意する
まずはconfigディレクトリ配下にどんな名前でもいいのでファイルを作ってあげます。
今回はpulldown.php
とします。
<?php
return [
'part_name' => [
'胸' => '胸',
'脚' => '脚',
'肩' => '肩',
'背中' => '背中',
'二頭' => '二頭',
'三頭' => '三頭',
'腹' => '腹',
]
];
中身は上記のようにしてあげます。
これで引っ張ってくる準備ができました。
実際にViewでプルダウンを記述する
<select name="part" id="part-id" class="form-control">
@foreach (Config::get('pulldown.part_name') as $key => $val)
<option value="{{ $key }}">{{ $val }}</option>
@endforeach
</select>
ビューでは上記のようにして記述してあげます。
foreach
で先程記述したpulldown.php
のpart_name
のキー、バリューを回してあげる形です。
これで先程のoptionタグベタ打ちと同様の動きをします。
これのほうが可読性もあがり、optionタグの数が多くなってもスッキリしますね。
DBに登録しそれを使ってプルダウンを書く
今度は予めDBに使いたいデータを登録し、それをプルダウンとして使う方法について書いていきます。
DBにデータを登録する
まずはDBにデータを登録してあげます。
ファイルがあってCSVでインポートしてあげても良いですし、少ないならベタ打ちでDBに登録しても良いです。
なのでとりあえずデータをDBに登録してあげましょう。
Controllerでデータを準備する
ControllerファイルにてDBデータをビューで使えるように整えてあげます。
今回はpluckメソッドを使ってあげます。
public function create() {
$trParts = TrPart::pluck('part_name', 'id');
return view('trrecords.create', compact('trParts'));
}
Viewにてプルダウンを作る
そうしたらそれをビューで使ってあげます。
<select class="form-control" id="part_id" name="part">
<option value="">選択してください</option>
@foreach ($trParts as $index => $name)
<option value="{{ $index }}">{{ $name }}</option>
@endforeach
</select>
先程同様foreach
で回してあげるだけですね。
かなりスッキリと書くことができます。
そのときによってどの使い方が良いかはわかれるかもしれませんが
それぞれ知っておくと便利かなと思います!
以上。