PHP
Laravel
laravel5
laravel5.2

Laravelで都道府県のプルダウンメニューを作ってみる

More than 1 year has passed since last update.

以下の記事を見て、DBを使うのは色々と無駄が多いなと思ったので、設定ファイルを使う例を紹介します。設定ファイルはお好きにコピペで使いまわしちゃってください。

Laravel5で都道府県のプルダウンをデータベースから取得する(自分用メモ)


データの準備

Laravelではconfig下に好きなファイルを作成でき、定数的な使い方ができる。定義した値はconfig('ファイル名.キー名')でアプリのどこからでも取得できる。配列の入れ子ももちろん可能。


pref.php

<?php 

return array(
'1' => '北海道',
'2' => '青森県',
'3' => '岩手県',
'4' => '宮城県',
'5' => '秋田県',
'6' => '山形県',
'7' => '福島県',
'8' => '茨城県',
'9' => '栃木県',
'10' => '群馬県',
'11' => '埼玉県',
'12' => '千葉県',
'13' => '東京都',
'14' => '神奈川県',
'15' => '新潟県',
'16' => '富山県',
'17' => '石川県',
'18' => '福井県',
'19' => '山梨県',
'20' => '長野県',
'21' => '岐阜県',
'22' => '静岡県',
'23' => '愛知県',
'24' => '三重県',
'25' => '滋賀県',
'26' => '京都府',
'27' => '大阪府',
'28' => '兵庫県',
'29' => '奈良県',
'30' => '和歌山県',
'31' => '鳥取県',
'32' => '島根県',
'33' => '岡山県',
'34' => '広島県',
'35' => '山口県',
'36' => '徳島県',
'37' => '香川県',
'38' => '愛媛県',
'39' => '高知県',
'40' => '福岡県',
'41' => '佐賀県',
'42' => '長崎県',
'43' => '熊本県',
'44' => '大分県',
'45' => '宮崎県',
'46' => '鹿児島県',
'47' => '沖縄県'
);
?>


コントローラーで取得する


SampleController.php

public function sample() {

$prefs = config('pref');
return view('sample')->with(['prefs' => $prefs]);
}


ビューで表示する


sample.blade.php

<select>

@foreach($prefs as $index => $name)
<option value="{{ $index }}">$name</option>
@endforeach
</select>


ビューで直接取得+表示も可能


sample.blade.php

<select>

@foreach(config('pref') as $index => $name)
<option value="{{ $index }}">$name</option>
@endforeach
</select>


選択された値の保持

検索機能なんかでは選択されたメニューを保持しておきたいことがあると思います。

<select name="_pref">

@foreach(config('pref') as $index => $name)
<option value="{{ $index }}" @if(old('_pref') == $index) selected @endif>$name</option>
@endforeach
</select>


(おまけ)

普通は1~47の数字をpref_idみたいなカラムに保存して、表示する時はIDをもとに文字列を取得すると思う。Userモデルを例にその流れを書いてみる。


Userモデルに都道府県名を返すメソッドを用意する。


User.php

public function getPrefNameAttribute() {

return config('pref.'.$this->pref_id);
}


user.blade.php

<p>出身地{{ $user->prefName }}</p>