同じようなフォームを作成したいけど、何回も同じ記述するのは冗長だな….なんかいい方法はないかな…
こんな疑問を解決します。
この記事では、forを使って、フォームを複数生成する方法を解説します。
完成形は以下のような形になります。
このようなレイアウトをLaravelで書こう!ってなったときに、フォームをわざわざ5つも書かなくてもいい方法を解説していくのでぜひ参考にしてください。
休日で空いた時間の暇つぶしを探せるアプリを公開しています。
結論:forを使って、フォームを複数作成する
このようなレイアウトを作成する場合、普通ならフォームを5つ書くと思いますが、forを使えば、フォームは1つで十分になります。
まずはforで簡単な例を紹介すると、以下のように書けば3つ複製できます。
@for ($i = 1; $i <=3; $i++)
<p>Laravelでフォームを複数作成</p>
@endfor
これを応用して、フォームを複数作成していきます。
Laravelでフォームを複数作成する方法
それでは、forを使ってLaravelでフォームを複数作成する方法を解説します。
※bootstrapを導入しています。
<div class="form-group">
@for ($i = 1; $i <= 5; $i++)
<label>{{ __('メールアドレス'. $i) }}<span class="badge badge-secondary ml-2">{{ __('任意') }}</span></label>
<input type="text" class="form-control{{ $errors->has('email'. $i) ? ' is-invalid' : '' }}" name="email{{ $i }}" value="{{ old('email'. $i) }}">
@if ($errors->has('email'. $i))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('email'. $i) }}</strong>
</span>
@endif
@endfor
</div>
forは1〜5までフォームを複数作成していくので、$iには1〜5の数字が入ります。
‘メールアドレス’. $iとすれば、メールアドレス1、メールアドレス2、…のようになっていきます。
もしforを使わないと、フォームの数だけレイアウトを記述する必要があるので冗長です。
<div class="form-group">
<label>{{ __('メールアドレス1') }}<span class="badge badge-secondary ml-2">{{ __('任意') }}</span></label>
<input type="text" class="form-control{{ $errors->has('email1') ? ' is-invalid' : '' }}" name="email1" value="{{ old('email1') }}">
@if ($errors->has('email1'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('email1') }}</strong>
</span>
@endif
</div>
<div class="form-group">
<label>{{ __('メールアドレス2') }}<span class="badge badge-secondary ml-2">{{ __('任意') }}</span></label>
<input type="text" class="form-control{{ $errors->has('email2') ? ' is-invalid' : '' }}" name="email2" value="{{ old('email2') }}">
@if ($errors->has('email2'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('email2') }}</strong>
</span>
@endif
</div>
<div class="form-group">
<label>{{ __('メールアドレス3') }}<span class="badge badge-secondary ml-2">{{ __('任意') }}</span></label>
<input type="text" class="form-control{{ $errors->has('email3') ? ' is-invalid' : '' }}" name="email3" value="{{ old('email3') }}">
@if ($errors->has('email3'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('email3') }}</strong>
</span>
@endif
</div>
あとで修正することになったら、上記の場合結構面倒なので、やはりforを使って複数フォームを作成するのがいいですね。
【まとめ】Laravelでフォームを複数作成する方法
forを使ってフォームを複数作成する方法を解説しました。
スッキリとコードをかけるので、実務で役に立ちます。
ぜひ活用してみてくださいね!
このブログでは、他にもLaravelで役立つ記事を書いているので、ぜひ参考にしてください。
休日で空いた時間の暇つぶしを探せるアプリを公開しています。
コメント