2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Lalavel】バリデーションルールを作成する

2
Posted at

バリデーションルールは、Illuminate\Contracts\Validation名前空間の Rule というクラスを継承して作られる。

このRuleを継承したクラスを用意して、ルールを作成する。

# app/Rules/Myrule.php が作成される。

php artisan make:rule Myrule
Myrule.php

//作成されるソース

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class Myrule implements Rule
{
    public function __construct()
    {
        //
    }

    public function passes($attribute, $value)
    {
        # ルールの通過条件を記載
        # $attribute: ルールの属性
        # $value: チェックする値
    }

    public function message()
    {
        # 返すメッセージ
        return 'The validation error message.';
    }
}

使用例)

Myrule.php
<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class Myrule implements Rule
{
    public function __construct($n)
    {   
        //インスタンス生成時、バリデーションのルールとなる値を入力
        $this->num = $n;
    }

    public function passes($attribute, $value)
    {
        //ルールとなる値($n)で入力された$valueが割り切れるかチェック(true or falesを返す)
        return $value % $this->num == 0;
    }

    public function message()
    {   //function passesメソッドでfalseが返された時に、返すメッセージの設定
        return $this->num . 'で割り切れる値が必要です。';
    }
}
HelloRequest.php

//FormRequest

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use App\Rules\Myrule;

class HelloRequest extends FormRequest
{
   public function authorize()
   {
       if ($this->path() ==  'hello')
       {
           return true;
       } else {
           return false;
       }
   }

   public function rules()
   {
       return [
            //Myruleクラスのインスタンスを作成。コンストラクタに 5 を渡す。
           'age' => new Myrule(5)
       ];
   }
}
2
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?