protected function validator(array $data)
{
$validation = Validator::make($data, [
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed']
]);
if ($validation->fails())
{
return session()->flash('alert-danger', 'error');
}
}
protected function create(array $data)
{
$company = new Company();
$company->store_name = $data['company_name'];
$company->save();
}
檢查驗證器函式內的失敗狀態并顯示錯誤訊息
uj5u.com熱心網友回復:
request()->validate([
'email' => 'required'
],
[
'email.required' => 'You have to choose the email!',
]);
uj5u.com熱心網友回復:
試試下面的代碼而不是上面的驗證
request()->validate([
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
];
現在,如果您洗掉代碼
if ($validation->fails())
{
return session()->flash('alert-danger', 'error');
}
代碼將運行沒有任何錯誤。如果您沒有在輸入欄位中輸入任何值,request->validate() 將檢查所有請求。
uj5u.com熱心網友回復:
您實際上需要在if ($validation->fails())支票中回傳一些東西。現在,您正在設定會話 Flash,但回傳null(->flash()沒有回傳值)。
您在這里有幾個解決方案,但這取決于這是表單提交還是 AJAX 請求:
protected function validator(array $data) {
return Validator::make($data, [
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed']
]);
}
protected function create(array $data) {
$validator = $this->validator($data);
if ($validator->fails()) {
session()->flash('alert-danger', 'error');
// If this is an AJAX Request:
if (request()->ajax()) {
return response()->json(['errors' => $validator->errors()], 422);
}
// If this is a Form Submission:
return back()->withErrors($validator->errors());
}
$company = new Company();
$company->store_name = $data['company_name'];
$company->save();
}
基本上,修改您的validator方法以回傳Validator::make()實體,在您的create()方法中檢查它,并根據這是 AJAX 請求還是表單提交來適當地回傳。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/514392.html
