Php 使用登录表单存储数据(针对每个用户)-Laravel 5.7
我正在建立一个有几个“区域”的网站,使其易于理解。 用户将在登录表单中选择他们想要进入的任何区域,他们可以进入他们想要进入的任何区域,但只能在登录时进行选择Php 使用登录表单存储数据(针对每个用户)-Laravel 5.7,php,laravel,laravel-5.7,Php,Laravel,Laravel 5.7,我正在建立一个有几个“区域”的网站,使其易于理解。 用户将在登录表单中选择他们想要进入的任何区域,他们可以进入他们想要进入的任何区域,但只能在登录时进行选择 我想在默认用户登录时,以相同的形式将区域存储在默认用户表中(尽管据我所知,登录表单没有存储任何内容) 我不知道我需要编辑什么文件,它们必须是核心文件 我试图修改默认控制器,但没有成功。在以前的laravel版本中,它们似乎没有那么隐蔽 Table users (default table used in Laravel for User
我想在默认用户登录时,以相同的形式将区域存储在默认用户表中(尽管据我所知,登录表单没有存储任何内容) 我不知道我需要编辑什么文件,它们必须是核心文件 我试图修改默认控制器,但没有成功。在以前的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']
]);
}
别忘了在上面的方法验证器中包含区域
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
}
希望这有帮助。如果您在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']
]);
}
别忘了在上面的方法验证器中包含区域
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中粘贴以下内容:
/**
*验证用户登录请求。
*
*@param\light\Http\Request$Request
*@返回无效
*
*@throws\light\Validation\ValidationException
*/
受保护函数validateLogin(请求$Request)
{
$request->validate([
$this->username()=>“必需|字符串”,
“密码”=>“必需|字符串”,
“zone'=>”必需|在:zone_1、zone_2、zone_3',//所有可能的分区
]);
}
/**
*用户已通过身份验证。
*
*@param\light\Http\Request$Request
*@param混合$user
*@返回混合
*/
已验证的受保护函数(请求$Request,$user)
{
$user->zone=$request->zone;//更新用户中的区域
$user->save();//保存用户
}
假设区域下拉列表的名称为zone
,然后在app/Http/Controllers/Auth/LoginController.php中粘贴以下内容:
/**
*验证用户登录请求。
*
*@param\light\Http\Request$Request
*@返回无效
*
*@throws\light\Validation\ValidationException
*/
受保护函数validateLogin(请求$Request)
{
$request->validate([
$this->username()=>“必需|字符串”,
“密码”=>“必需|字符串”,
“zone'=>”必需|在:zone_1、zone_2、zone_3',//所有可能的分区
]);
}
/**
*用户已通过身份验证。
*
*@param\light\Http\Request$Request
*@param混合$user
*@返回混合
*/
已验证的受保护函数(请求$Request,$user)
{
$user->zone=$request->zone;//更新用户中的区域
$user->save();//保存用户
}
下面的函数在哪个文件中进行身份验证?我找不到。此外,用户在注册时不会选择或设置区域。仅在登录时。下面的函数在哪个文件中进行身份验证?我找不到。此外,用户在注册时不会选择或设置区域。只有在登录时。如果我从表中获取区域名称(我就是这么做的),并且这些区域不断增加,会怎么样?登录控制器上的下拉菜单已经工作并获取表的数据。您可以在模型上创建一个名为zones()
的方法,然后return Zone::pulk('title')->toArray()
(如果您有一个区域模型?)然后在验证中使用它作为(\App\User::zones())中的规则::in(\App\User::zones())
(我使用了标题,不确定您的区域表是什么样子?@Josep Feixas不明白还是什么?嗨,这是周末,所以我停了两天:)抱歉,这给了我一个错误。传递给App\Http\Controllers\Auth\LoginController::validateLogin()的参数1必须是App\Http\Controllers\Auth\Request的实例,light\Http\Request的实例giveedIt:是的,它现在可以工作了,我需要在LoginController.php文件上方添加“use light\Http\Request;”。谢谢你,投了赞成票!如果我从表中取区域名称(我就是这么做的),并且这些区域不断增加,会怎么样?登录控制器上的下拉菜单已经工作并获取表的数据。您可以在模型上创建一个名为zones()
的方法,然后return Zone::pulk('title')->toArray()
(如果您有一个区域模型?)然后在验证中使用它作为(\App\User::zones())中的规则::in(\App\User::zones())
(我使用了标题,不确定您的区域表是什么样子?@Josep Feixas不明白还是什么?嗨,这是周末,所以我停了两天:)抱歉,这给了我一个错误。传递给App\Http\Controllers\Auth\LoginController::validateLogin()的参数1必须是App\Http\Controllers\Auth\Request的实例,light\Http\Request的实例giveedIt:是的,它现在可以工作了,我需要在LoginController.php文件上方添加“use light\Http\Request;”。谢谢你,投了赞成票!