[英]Store data with Login form (for each user) - Laravel 5.7
我正在建立一個帶有多個“區域”的網站,以使其易於理解。 用戶將在登錄表單中選擇他們想要進入的任何區域,他們可以進入他們想要進入的任何區域,但是只能在登錄時選擇。
Email: [__________]
Pass: [__________]
Zone: [_dropdown_]
zone 1
zone 2
...
而且我想在他們登錄時以相同的形式實際上將區域存儲在默認用戶表中(據我所知,登錄表單不存儲任何內容)
我不知道我需要編輯哪些文件,它們必須是核心文件...
我試圖修改默認控制器,但沒有運氣。 在以前的laravel版本中,它們似乎不太隱蔽。
Table users (default table used in Laravel for Users/Auth/Login)
-id
-name
-email
-password
-zone (NEW FIELD)
每次用戶登錄時,都必須修改“區域”字段,因為整個網站將根據此值而變化
在您的app/Http/Controllers/Auth/RegisterController.php
文件中,有一個
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'zone' => $data['zone']
]);
}
不要忘記在上面的方法驗證器中包含zone
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:6', 'confirmed'],
]);
}
然后,當“用戶登錄”方法經過authenticated
運行。
protected function authenticated(Request $request, $user)
{
// Store Zone In session HERE
}
希望這可以幫助。 如果您認為此答案有幫助,請隨時進行投票
假設區域下拉列表的名稱為zone
,然后在app/Http/Controllers/Auth/LoginController.php
粘貼以下內容:
/**
* Validate the user login request.
*
* @param \Illuminate\Http\Request $request
* @return void
*
* @throws \Illuminate\Validation\ValidationException
*/
protected function validateLogin(Request $request)
{
$request->validate([
$this->username() => 'required|string',
'password' => 'required|string',
'zone' => 'required|in:zone_1,zone_2,zone_3', // all possible zones
]);
}
/**
* The user has been authenticated.
*
* @param \Illuminate\Http\Request $request
* @param mixed $user
* @return mixed
*/
protected function authenticated(Request $request, $user)
{
$user->zone = $request->zone; // update zone in user
$user->save(); // save user
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.