我的自定义请求文件中有一个验证。
class AuthRequest extends FormRequest
{
public function store()
{
return $this->validate([
'first_name' => ['required','min:2','max:30',new PersonNameRule],
'last_name' => ['required','min:2','max:30',new PersonNameRule],
'username' => ['required','confirmed',new UsernameRule]
]);
}
public function rules(){ return []; }
}
在我的控制器中,这是使用方法。
public function store(AuthRequest $request)
{
$data = $request->store();
return request()->all();
}
我的问题是如何在下面执行这些操作:
session(['attempt' => session('attempt')+1 ?? 1]);
session()->forget('attempt')
@mrhn是正确的,您没有填写函数内部的规则,因此FormRequest
将始终返回false。相反,您宁愿创建自己的方法并使用$this->validate()
。
现在在文件.. \ Illuminate \ Validation \ Validator.php]中找到解决问题的方法,然后找到validate()
函数,然后将您想要执行的会话放在下面,如下所示。
public function validate() { if ($this->fails()) { session(['attempt' => session('attempt')+1 ?? 1]); throw new ValidationException($this); }else{ session()->forget('attempt'); } return $this->validated(); }
上述解决方案是全局的,这意味着它将在您每次使用
$this->validate()
时执行。
您可以使用Validator
实例而不是调用validate()
首先,我将把您的验证转换为表单请求,当注入到控制器中时,它将自动解决。