フォームリクエストとはなにか?公式のフォームリクエスト作成を見てみましょう。
https://readouble.com/laravel/5.7/ja/validation.html
フォームリクエストはバリデーションロジックを含んだカスタムリクエストクラス。フォームリクエストクラスを作成するには、make:request Artisan CLIコマンドを使用する。
生成されたクラスは、app/Http/Request ディレクトリへ設置される。
ふーん
とりあえず、やってみましょう。
1. make:requestでフォームリクエストクラスを作成
CompanyRequestを作ってみたいと思います。
[vagrant@localhost zeus]$ php artisan make:request CompanyRequest Request created successfully.
app/Http のディレクトリに、Reqeust/CompanyReqeust.phpが生成されているのがわかります。
ファイルの中身を見てみると、authorizeとrulesメソッドが作られています。
namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class CompanyRequest 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 [ // ]; } }
2.生成されたクラス内のrules()の中身を編集
バリデーションを記述します。
public function rules() { return [ 'company_name' => 'required', 'agent_name' => 'required', ]; }
3.コントローラーでフォームリクエストを呼び込む
use App\Http\Requests\CompanyRequest; を追加
public function confirm(Request $request) を、public function confirm(CompanyRequest $request)に変更する
namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Company; use App\Agent_mst; use App\Http\Requests\CompanyRequest; class CompanyConfirmController extends Controller { public function confirm(CompanyRequest $request){ // $validatedData = $request->validate([ // 'company_name' => 'required', // 'agent_name' => 'required', // ]); $confirm = new Company($request->all()); return view('companyconfirm', compact('confirm')); } }
フォームリクエスト側でバリデーションができるようになりました。
やったーーーー^^