はじめに
以前、作成した問い合わせフォームに入力チェックを追加する readouble.com
フォームリクエストの作成
$ php artisan make:request StoreContactForm
- 作成したフォームリクエストはApp\Http\Requestのフォルダの直下に作成される
- 下記のファイルに入力チェックを条件を指定する
- 入力チェックをパイプランで指定する
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreContactForm extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
'name' => 'required|string|max:20',
'email' => 'required|email|unique:users|max:255',
'url' => 'url|nullable',
'age' => 'required',
'sex' => 'required',
'subject' => 'required|string|max:50',
'description' => 'required|string|max:1000',
'caution' => 'required',
];
}
}
補足
下記の「 This action is unauthorized. 」というエラーメッセージが表示された場合

下記のauthorizeのメソッドの戻り値をtrueに変更する
class StoreContactForm extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
フォームリクエストをコントローラーに指定する
- RequestクラスをStoreContactFormクラスに変更する
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(StoreContactForm $request)
{
//
$contact = new ContactForm;
$contact->name = $request->input('name');
$contact->email = $request->input('email');
$contact->url = $request->input('url');
$contact->sex = $request->input('sex');
$contact->age = $request->input('age');
$contact->subject = $request->input('subject');
$contact->description = $request->input('description');
$contact->save();
return redirect('contact/index');
}
View側にエラーメッセージを表示する処理を実装する
- 下記の処理をエラーを表示したい個所に埋め込む
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
動作確認

補足
- エラーメッセージを英語から日本語に変えたい場合、resource/lang/ja/validation.phpファイルに記述する
'attributes' => [
'name' => '名前',
'email' => 'メールアドレス',
'age' => '年齢',
'sex' => '性別',
'subject' => '件名',
'description' => '詳細',
'caution' => '注意事項',
'password' => 'パスワード'
],