Laravel入門#03(フォームリクエストバリデーション)




どうも、cocomaruです。

今回はLaravelのバリデーションをコントローラから切り出してみます。
別にするにあたり、「フォームリクエストバリデーション」という仕組みを使っていきたいと思います。

フォームリクエスト作成

まずは以下のコマンドでフォームリクエストクラスを作成しましょう。

# フォームリクエストクラスを作成 
$ php artisan make:request TaskRequest

# 以下にクラスが作成される 
$ ls ./app/Http/Requests/
TaskRequest.php

中身を見ると以下のようになっています。

app/Http/Requests/TaskRequest.php
<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class TaskRequest 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 [
            //
        ];
    }
}

これを以下の通り、編集してみましょう。

// ...
    public function authorize()
    {
        // trueへ
        return true;
    }

    public function rules()
    {
        return [
            // 「task_name」のリクエストデータを「必須」「最大文字数255文字まで」を追加
            'task_name' => 'required|max:255', 
        ];
    }

コントローラ編集

次はコントローラですね。
前々回のソースを流用します。

app/Http/Controllers/TaskController.php
<?php

// TaskRequestを追加
use App\Http\Requests\TaskRequest;
// ...
    //storeメソッドの引数にTaskRequestをタイプヒントで指定します。
    public function store(TaskRequest $request)
    {
//    以下の処理を削除
//    $validator = Validator::make($request->all(), [
//        'task_name' => 'required|max:255',
//    ]);
//    if ($validator->fails()) {
//        return redirect('/')
//            >withInput()
//            ->withErrors($validator);
//    }
// ... 
    }

これでバリデートの指定は終わりです。
特に難しい事はなかったかと思います!

これでバリデーションに失敗すると前の画面に自動的にリダイレクトされます。
また「withInput()」や「withErrors()」もLaravelの方でコールしてくれますので、
前画面の方でバリデートエラーや入力内容を処理することができます!

次回は日本語化について説明していきます。

以上になります。

Laravel入門#04(日本語化対応)

2018.09.17








コメントを残す

メールアドレスが公開されることはありません。