手順
- app/Rulesにバリデーションルールファイルを作成
- FormRequestクラスで上記ファイルを使用する
例えば・・
バリデーションで、入力されたパスワードが最新のものか確認したい場合
app/Rulesにバリデーションファイル作成
app/Rules
以下にファイルを新規追加 (ファイル名は任意のものでOK)passes
メソッドの中にルールを実装する
- app/Rules/CurrentPassword.php
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\Hash;
class CurrentPassword implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
// パスワードが正しいかをチェックする
return Hash::check($value, auth()->user()->password);
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return '現在のパスワードが正しくありません';
}
}
Requestファイルで使う
- UserAccountRequest.php
<?php
namespace App\Http\Requests;
use App\Rules\CurrentPassword; // ⭐️ 作成したファイルをuseする
use Illuminate\Foundation\Http\FormRequest;
class UpdateAccountRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
// ⭐️ 作成したCurrentPasswordクラスを使用する
'current_password' => [ new CurrentPassword() ],
];
}
}
標準のバリデーションルールに含まれない
オリジナルの規則を追加したい場合のメモ