Laravel Form Facadeで日付選択欄を作成する


LaravelのForm Facadeを使って日付のselect boxを作成したのでメモしておきます。

作ったフォーム

↓ こんなやつ。一般的な日付選択のフォームです。
右側のみ、当時の日付がデフォルト値として選択されてあります。

yearは2015 ~ 2018を選択できるようにしてあります。

コード

Form Facadeを使えば簡潔に記述できます。

index.blade.php


{!! Form::label('period', '日付:') !!}
<?php $today = \Carbon\Carbon::now(); ?>

{{Form::selectRange('from_year', 2015, 2018, '', ['placeholder' => ''])}}年
{{Form::selectRange('from_month', 1, 12, '', ['placeholder' => ''])}}月
{{Form::selectRange('from_day', 1, 31, '', ['placeholder' => ''])}}日

<span></span>

{{Form::selectRange('to_year', 2015, 2018, $today->year)}}年
{{Form::selectRange('to_month', 1, 12, $today->month)}}月
{{Form::selectRange('to_day', 1, 31, $today->day)}}日

要素はこんな感じになっています。

説明

1. <?php $today = \Carbon\Carbon::now(); ?>
当日の日付を取得するために利用します。

$tody->year :年
$today->month :月
$today->day :日

を取得することができます。

2. Form::selectRange()
Form::selectRange()を用いることで、選択した範囲でセレクトボックスを作成することができます。

{{Form::selectRange('from_year', 2015, 2018, '', ['placeholder' => ''])}}
引数1: name属性値
引数2: 始まりの値
引数3: 終わりの値
(引数4: デフォルト値)
(引数5: クラスやplaceholderなどデフォルト値を設定)

最後に

便利ですね。
フロントが苦手なので、どんどん楽にできる方法探していきたいです。

・参考
http://recipes.laravel.jp/category/17
https://qiita.com/yudsuzuk/items/ff894bd0b76d4657741d