lumen-request-validate icon indicating copy to clipboard operation
lumen-request-validate copied to clipboard

[RequestAbstract] validated() method causes the validation to be called again.

Open Slisarenko opened this issue 2 years ago • 0 comments

Lumen Version: 8.x PHP Version: 7.4

Description: The problem is getting the retrieve the validated input data with method validated(). When it is called, it re-initiates the request validation.

Steps To Reproduce:

  1. Controller:
use App\Http\Requests\UserRequest;

class UserController extends Controller
{
    public function sandbox(UserRequest $request)
    {
        return response()->json($request->validated());
    }
}
  1. RequestAbstract:
use Pearl\RequestValidate\RequestAbstract;
use Illuminate\Validation\Rule;

class UserRequest extends RequestAbstract
{
    public function rules()
    {
        return [
	    'full_name' => 'required|string|max:50',
	    'phone' => [
	        'required',
	        'max:50',
	        'regex:/^(\+[0-9]+)$/',
	        Rule::unique('clients')->where(function($query){
	            return $query->where('account_id', auth()->user()->account_id);
	        })
	    ],
	    'email' => 'nullable|email|max:50',
	    'info' => 'max:200'
        ];
    }
}
  1. Debugbar: Since the rules have a check in the database, we can see a duplicated query to the database, which means that the method rules() was called twice. image

Slisarenko avatar Aug 31 '22 07:08 Slisarenko