0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【laravel】実務で使えそうなプルダウンを書いてみる

Posted at

はじめに

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とします。

config/pulldown.php
<?php

return [
    'part_name' => [
        '胸' => '胸',
        '脚' => '脚',
        '肩' => '肩',
        '背中' => '背中',
        '二頭' => '二頭',
        '三頭' => '三頭',
        '腹' => '腹',
    ]
];

中身は上記のようにしてあげます。
これで引っ張ってくる準備ができました。

実際にViewでプルダウンを記述する

test.blade.php
<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.phppart_nameのキー、バリューを回してあげる形です。
これで先程のoptionタグベタ打ちと同様の動きをします。

これのほうが可読性もあがり、optionタグの数が多くなってもスッキリしますね。

DBに登録しそれを使ってプルダウンを書く

今度は予めDBに使いたいデータを登録し、それをプルダウンとして使う方法について書いていきます。

DBにデータを登録する

まずはDBにデータを登録してあげます。
ファイルがあってCSVでインポートしてあげても良いですし、少ないならベタ打ちでDBに登録しても良いです。
なのでとりあえずデータをDBに登録してあげましょう。

スクリーンショット 2023-01-19 9.35.07.png

Controllerでデータを準備する

ControllerファイルにてDBデータをビューで使えるように整えてあげます。
今回はpluckメソッドを使ってあげます。

public function create() {

        $trParts = TrPart::pluck('part_name', 'id');
        return view('trrecords.create', compact('trParts'));

    }

Viewにてプルダウンを作る

そうしたらそれをビューで使ってあげます。

test.blade.php
<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で回してあげるだけですね。
かなりスッキリと書くことができます。

そのときによってどの使い方が良いかはわかれるかもしれませんが
それぞれ知っておくと便利かなと思います!
以上。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?