2 回答

TA貢獻1793條經驗 獲得超6個贊
您實際上可以在訪問控制器之前驗證數據。它更安全,您將擁有更清晰的代碼。首先,創建您的自定義請求驗證:
php artisan make:request UserRequest
這將創建一個空UserRequest類,您可以在其中驗證數據:
class UserRequest extends FormRequest
{
public function authorize()
{
return true;
}
//Validate your data here
public function rules()
{
return [
'phone' => 'required|unique:users',
'fname' => 'required',
'lname' => 'required',
];
}
//Add custom message if validation fails
public function messages()
{
return [
'phone.required' => 'Phone is required.',
'phone.unique' => 'Phone number should be unique.',
'fname.unique' => 'First name is required.',
'lname.required' => 'Last name is required.',
];
}
}
您現在要做的就是在控制器中導入此自定義驗證:
public function update(UserRequest $request)
{
$user_id = Auth::user()->id;
User::where('id', $user_id)->update([
'phone' => $request->phone,
'fname' => $request->fname,
'lname' => $request->lname
]);
return;
}

TA貢獻1898條經驗 獲得超8個贊
有一個問題。那就是 'phone' => 'unique:App\User,phone,' 。$用戶->電話, 線路。
您的代碼:
您需要在保存到數據庫之前驗證請求
public function update(Request $request)
{
$user = Auth::user();
$request->validate([
// unique:table,column,except,idColumn
'phone' => 'unique:App\User,phone,' . **$user->phone**,
]);
$user_id=Auth::user()->id;
User::where('id', $user_id)->update([
'phone' => $request->phone,
'fname' => $request->fname,
'lname' => $request->lname
]);
return;
}
I hope it helps you.
這會產生問題。你應該使用$this->phone。
公共功能更新(請求 $request){ $user = Auth::user();
$request->validate([
// unique:table,column,except,idColumn
'phone' => 'unique:App\User,phone,' . $this->phone,
]);
$user_id=Auth::user()->id;
User::where('id', $user_id)->update([
'phone' => $request->phone,
'fname' => $request->fname,
'lname' => $request->lname
]);
return;
}
試試這個。
- 2 回答
- 0 關注
- 206 瀏覽
添加回答
舉報