LoginSignup
0
0

More than 3 years have passed since last update.

【Laravel】バリデーションの作成

Posted at

バリデーションを簡単に安全にかけるための方法メモ。

フォームリクエスト

バリデーション専用のフォルダを作って処理をさせる。
書きコマンドを打ってrequestフォルダとファイルを作成。

php artisan make:request StoreContactForm

ファイル名は任意。

Controller

controller内にフォルダとファイルが出来てるはずなので確認。

Controller/Requests/StoreContactForm.php
public function authorize()
    {
        return true;  //falseからtrueに変更
    }
.
.
.

public function rules()
    {
        return [
            //ここにバリデーションのルールを書く
            'name' => 'required|string|max:20',
            'title' => 'required|string|max:50',
            'email' => 'required|email|unique:users|max:255',
            'gender' => 'required',
            'contact' => 'required|accepted',
        ];
    }

ルールは公式参照。
https://readouble.com/laravel/7.x/ja/validation.html#rule-url】

作成したデータを送る際に表示させたいので、storeメソッドに適応してあげる。

ContactFormController.php
//バリデーションのファイルを呼び出し
use App\Service\CheckFormData;

//第一引数をRequestからバリデーションクラス名にする
public function store(StoreContactForm $request)
    {
        $contact = new ContactForm;
        $contact->name = $request->input('name');
        $contact->email = $request->input('email');
        $contact->title = $request->input('title');
        $contact->gender = $request->input('gender');
        $contact->contact = $request->input('contact');

        $contact->save();

        return redirect('contacts/index');
    }

View

エラーメッセージを表示します。

create.blade.php
@if($errors->any())
    <ul>
        @foreach($errors->all() as $error)
            <li class="list-group-item list-group-item-danger">{{$error}}</li>                    @endforeach
    </ul>
@endif

$errorsはViewファイルに与えられてる変数らしいです。
こいつを回してあげて該当するもののみ表示します。

まとめ

バリデーションは最初ややこしい印象があるのですが、大事な部分でもあるので徐々に慣れていきたいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0