3
3

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 5 years have passed since last update.

Laravelのフラグ設定について

Last updated at Posted at 2019-04-18

よくある実装で例えばユーザの権限を「有効」「無効」を「Y」と「N」という
フラグデータで扱いViewで出力するときにそれぞれ「有効」、「無効」という感じで出力したいときってあるかなと思います。

##Model

public function userStatus($flag) {
    return $flag == 'Y' ? '有効' : '無効';
}

こんな感じでモデル層に実装したりするのを見かけたりするのですが
別にこれでも悪くはないですが、あくまでモデル層はDB接続やロジック層を重点的に書くところで
出力に関わる処理を書くのはベストではないかと思います。

モデル以外に書くとすれば人によって様々ですが
ここでいくつか候補を挙げていきます

##config

config/users/status.php

return [
    "label" => ["Y" => "有効", "N" => "無効"],
]

と設定ファイルに定義したら

index.blade.php
config("users.status.label.{$user.active_flag}", "未定義")

という形で呼び出すことができます。

##言語データ
Laravelのローカリゼーション機能で定義する場合

resouce/lang/ja/user.php
return [
    "active_flag" => ["Y" => "有効", "N" => "無効"],
]
index.blade.php
__("user.active_flag.{$user.active_flag}")

##プルダウン
あとはプルダウンの値を管理したいときにも役に立つます。

config/japan.php

return [
    "city" => [0 => "都市を選択してください", 1 => "東京", 2 => "大阪", 3 => "名古屋",4 => "福岡"],
]

とプルダウンの値を定義して

index.blade.php
 <select name="city" >
     @foreach(config('japan.city') as $key => $value)
         <option value="{{ $key }}" @if(config("japan.city.{$japan->city}")) selected @endif>
             {{ $value }}
         </option>
     @endforeach
 </select>

##まとめ
いくつか例を挙げましたが、好みにもよるかなと思います。
他にいい方法あればご教示いただければと思います。

3
3
1

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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?