0
0

More than 3 years have passed since last update.

初学者がlaravel 8.x でリクエストフォームを使ってみた

Posted at

フォームを実装する際にはもれなくついてくるであろうバリデーションをフォームリクエストで実装する方法。
自分用の備忘録です。

環境

OS: Windows 10 home
CPU: AMD Ryzen 2700X
GPU: NVIDIA GTX 1060
RAM: 16GB 2666Mhz
PHP: ver 8.0.3
Laravel: ver 8.45.1
MySQL(MariaDB): ver 15.1

1.Requestの作成

php artisan make:request ImageRequestt

例としてImageRequestを作成。

2.Requestの中身

ImageRequest.php
<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class ImageRequest 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 [
            'image' => 'required|mimes:jpg,jpeg,png|max:20480',
            'title' => 'required|min:2|max:100',
         ];
    }
    }
}

作成直後では、上記のようになっている。
authorizeメソッドの戻り値は基本的にtrueにしておく。
rulesメソッド内に必要なだけバリデーション内容を記述していきます。

3.コントローラーの中身

ImageUploadController.php
<?php

namespace App\Http\Controllers;

use App\Models\Image_upload;
use Illuminate\Http\Request;
use App\Http\Requests\ImageRequest;

class ImageUploadController extends Controller
{
    public function store(ImageRequest $request)
    {
        $newImage = new Image_upload();
        $newImage->title =$request->input('title');
        if($request->hasfile('image')){
            $file = $request->file('image');
            $extention = $file->getClientOriginalExtension();
            $filename = time().'.'.$extention;
            $file->storeAs('public/images',$filename); 
            $newImage->image = $filename;
        }
        $newImage->save();

    }

}

ImageRequestクラスが使えるよう冒頭に名前空間とクラスを足したuse宣言を記述しておきます。

use App\Http\Requests\ImageRequest;

次にstoreメソッド内のタイプヒントでImageRequestクラスを指定します。

public function store(ImageRequest $request)

これでstoreメソッドでは、ImageRequestで定めたrulesメソッドに基づいて入力された値をバリデートすることが出来ます。

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