前提
Laravelを独学で勉強中です。
Laravel Framework 9.20.0を使用し、
phpMyadminを使用しています。
実現したいこと
ユーザ登録の際、登録した日時をセレクトボックスで「年」「月」「日」をそれぞれ選択し、
DBにはdateカラムに「2022-07-19」と登録したいです。
行ったこと
一つの方法として、直接bladeの部分に書きました。
@include('layouts/admin_header') <h11>ユーザ情報編集</h11> <form action="/admin_add_confirm" method="post"> @csrf @method('PATCH') <div class=""> <div class="label">ID:</div> <div class="input-box"> <input class="id" name="id" placeholder="0123456789" value="{{ old('id')}}"> </div> <div class="label">名前:</div> <div class="input-box"> <input class="name" name="name" placeholder="山田 太郎" value="{{ old('name')}}"> </div> <div class="label">登録日:</div> @php $dt = new \Carbon\Carbon(); @endphp <div class="mr-3"> @php $k = 'birth_date__year'; $class_name = 'form-control'; $style = ''; $input_values_array = [ "" => "年" ]; for ($i = 0; $i <= 100; $i++){ $input_values_array[$dt->format("Y")] = $dt->format("Y"); $dt->subYearNoOverflow(); } $_form_value = old($k); @endphp {{ Form::select($k, @$input_values_array, $_form_value, ['class' => $class_name, 'style' => $style]) }} @error('birth_date__year') <div class="text-danger small">{{ $message }}</div> @enderror </div> <div class="mr-3"> @php $k = 'birth_date__month'; $class_name = 'form-control'; $style = ''; $input_values_array = [ "" => "月" ]; for ($i = 1; $i <= 12; $i++){ $input_values_array[$i] = $i; } $_form_value = old($k); @endphp {{ Form::select($k, @$input_values_array, $_form_value, ['class' => $class_name, 'style' => $style]) }} @error('birth_date__month') <div class="text-danger small">{{ $message }}</div> @enderror </div> <div class="mr-3"> @php $k = 'birth_date__day'; $class_name = 'form-control'; $style = ''; $input_values_array = [ "" => "日" ]; for ($i = 1; $i <= 31; $i++){ $input_values_array[$i] = $i; } $_form_value = old($k); @endphp {{ Form::select($k, @$input_values_array, $_form_value, ['class' => $class_name, 'style' => $style]) }} @error('birth_date__day') <div class="text-danger small">{{ $message }}</div> @enderror </div> <div class="input-box"> <select class="select" name="year" onchange="dropdort()"> <input class="date" name="date" placeholder="0123456789" value="{{ old('id')}}"> </div> <div class="btn-contents"> <a href="/admin_user">戻 る</a> </div> <div class="btn-contents"> <button>変 更</button> </div> </div> </form> @include('layouts/footer')
きちんとセレクトボックスが機能していますが、ここからどうデータベースに値を渡したらいいかわかりません。
また、PHPで生年月日のフォームを自作関数にしてLaravelのbladeで使ってみたを参考に別バージョンでセレクトボックスを作成しました。
@include('layouts/header') <h9>ユーザ登録</h9> <form action="/admin_add_confirm" method="post"> @csrf @method('PATCH') <div class=""> <div class="label">ID:</div> <div class="input-box"> <input class="number" name="number" placeholder="0123456789" value="{{ old('number')}}"> </div> <div class="label">名前:</div> <div class="input-box"> <input class="name" name="name" placeholder="山田 太郎" value="{{ old('name')}}"> </div> <div class="label">パスワード:</div> <div class="input-box"> <input class="password" name="password" placeholder="abcd1234" value="{{ old('password')}}"> </div> <li class="form-item"> <p class="form-item-title">登録日1</p> <select name="birthday_year"> <option value="">-</option> {{ MyFunction::yearSelect() }} </select> 年 <select name="birthday_year"> <option value="">-</option> {{ MyFunction::monthSelect() }} </select> 月 <select name="birthday_year"> <option value="">-</option> {{ MyFunction::daySelect() }} </select> 日 </li> <div class="btn-contents"> <button>登 録</button> </div> </div> </form> @include('layouts/footer')
この方法であれば、他の記事を投稿したりするときにもこの関数を使用できるので便利か?ともおもいましたが、
app.phpのtimezoneをAsia/Tokyoにしているにもかかわらず、2021年からしか表示されません。
またこの方法でも、どう年月日をdateカラムにまとめて登録できるのかわかりません。
検索しても出てこず・・・。
よろしくお願いいたします。
0 コメント