フォームの日付入力のデフォルト値を今日にする
ユーザーに入力をしてもらうフォームを作る際、日付を手入力で入れてもらうのですが、
意外と面倒だったりするなと思い、デフォルト値を設定することとしました。
今日のトレーニングメニューだったり今日の体重を入力することが主なので、
ある程度固定で今日をデフォルト値としていいというフォームを作る前提です。
考え方
inputタグの中にあるvalueに今日の日付を入れてあげればOK
<input type="date" name="tr_date" class="form-control" value="2022-12-22">
ただこれだと固定で12月22日になってしまうので、
phpを使って書いていきます。
実際のコード
<input type="date" name="tr_date" class="form-control" value="<?php echo date('Y-m-j');?>">
valueにphpの関数を入れてあげるだけです。
これでデフォルト値に今日の日付を入れてあげることができるようになりました。
日時だけでなく時刻も登録したい
もし、日時だけでなく時刻も判定したい場合はdatetime-local
を使ってあげます。
さらにvalueの中身をY-m-j
からY-m-j H-i
としてあげます。
<input type="datetime-local" name="tr_date" class="form-control" value="<?php echo date('Y-m-j H:i');?>">
ただこれだとフォーム画面上でUTFでの時刻がデフォルト値として表示されてしまいます。
DBに登録する場合はあまり気にしないかもしれませんが、
ユーザーが入力をするフォームということを考えるとあまりよろしくありません。
その場合は以下のように記載をし、現在時刻をとってきてあげます。
TrRecordController
public function create() {
$date1 = strtotime('+9 hour');
return view('trrecords.create', compact(
'date1',
));
}
create.blade.php
<input type="datetime-local" name="tr_date" class="form-control" value="<?php echo date('Y-m-j H:i', $date1);?>">
Controllerにて時刻(hour)に9を足したものを変数($date1)に入れてあげてます。
それを使って、value="<?php echo date('Y-m-j H:i', $date1);?>">
のように
date関数の第2引数にセットしてあげればOKです。
これでフォームの初期値(デフォルト値)に現在時刻をセットすることができます。