WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
Laravel
システム開発
[Laravel]Laravelでの条件付きバリデーション
システム開発担当のTFです。
※Laravel8系統対応
やり方
- bladeでフォーム作成
- FormRequestを作成し、rulesを設定する
- exclude_if, exclude_unlessを用いれば条件付きのバリデーションが可能
- Controllerで、作成したFormRequestを使用する
参考
Laravel 8.x バリデーション
【Laravel】 Requestを継承してバリデーションをする
サンプル
<form action="{{ route('request.store')}}" method="POST">
@csrf
<div>
<div>
<input id="kind01" type="radio" name="kind" value="1" @if(old('kind')==1) checked @endif></input>
<label for="kind01">種類1</label>
</div>
<div>
<input id="kind02" type="radio" name="kind" value="2" @if(old('kind')==2) checked @endif></input>
<label for="kind02">種類2</label>
</div>
<div>
<input id="kind03" type="radio" name="kind" value="3" @if(old('kind')==3) checked @endif></input>
<label for="kind03">種類3</label>
</div>
</div>
<div>
種類が3以外なら入力必須
<input class="@error('text1') error @enderror" type="text" name="text1" value="{{old('text1')}}"></input>
</div>
<div>
種類が1なら入力必須
<input class="@error('text2') error @enderror" type="text" name="text2" value="{{old('text2')}}"></input>
</div>
<button>送信</button>
</form>
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class SampleRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
,'kind'=>'required'
,'text1'=>'exclude_if:kind,3|required' // kindが3以外なら入力必須
,'text2'=>'exclude_unless:kind,1|required' // kindが1なら入力必須
];
}
public function messages()
{
return [
'required' => '必須入力です',
];
}
}
<?php
namespace App\Http\Controllers;
use App\Http\Requests\SampleRequest;
class RequestController extends Controller
{
public function store(SampleRequest $request)
{
// 登録処理
}
}