$this->validate 是因為所有控制器都使用了 ValidatesRequests Trait,是以可以使用這個 Trait 中提供的 validate() 方法
那 AppHttpRequests 裡的 validate () 方法是從哪裡來的?最終實作是相同的嗎?為什麼會有兩種寫法?(我知道 Validator::make() 是為了在 控制器外邊用)
Laravel 代碼如下:
$request->validate()
protected function validateLogin(AppHttpRequests $request)
{
$request->validate([ // <---- 看這行
'username' => 'required|string',
'password' => 'required|string',
'captcha' => ['required', 'captcha'],
], [
'captcha.required' => '驗證碼不能為空',
'captcha.captcha' => '請輸入正确的驗證碼',
]);
}
$this->validate()
public function form(Request $request, $id)
{
$this->validate($request, [ // <---- 看這行
'title' => 'bail|required|string|between:2,32',
'url' => 'sometimes|url|max:200',
'picture' => 'nullable|string'
]);
return response('表單驗證通過');
}