要在登录页面上对我进行身份验证,黄麻需要电子邮件和密码,例如:
(RegisterController)
protected function validator(array $data)
{
return Validator::make($data, [
// 'NOM' => ['required', 'string', 'max:50'],
// 'PRENOM' => ['required', 'string', 'max:50'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:PERSONNELS'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
为避免注册页面超载,我只是要求用户填写四个字段:名字,姓氏,电子邮件和密码。
我创建了UserEdit视图以完成和/或更新配置文件:Rue,CP,Ville(街道,邮政编码,城市)。
在我的UserController上,我研究了update function
。像这样:
public function update(Request $request, $id)
{
$details = \App\User::find($id);
if ($request->input('password')==$request->input('password-confirm') && $request->input('password')!='' && $request->input('password-confirm')!='') {
$details->password = $request->input('password');
$details->password = Hash::make($details['password']);
}
else{
return redirect()->action('UserController@edit', $id)->withErrors('Mot de passe diférents');
}
$membre = auth()->user();
$details->MATRICULE = $request->input('MATRICULE');
$details->NOM = $request->input('NOM');
$details->PRENOM = $request->input('PRENOM');
$details->RUE = $request->input('RUE');
$details->CP = $request->input('CP');
$details->VILLE = $request->input('VILLE');
$details->email = $request->input('email');
// $details->id_membre = $membre->id_membre;
$details->save();
return redirect()->route('user.edit', $id);
}
我不明白如何在该函数上放置验证器,就像继承类一样?而且我认为我还会遇到另一个问题:如果用户决定不更改其信息的可能性很大,那么唯一属性将阻止我更新表中的数据。
由于我的循环,如果密码必须超过8个字符但可以接受0,可以吗?
谢谢!
Ps我没有使用Matricule,因为它取决于管理员角色。
答案 0 :(得分:1)
有关如何在控制器方法中使用验证器的信息,请参见Laravel文档:https://laravel.com/docs/6.x/validation#manually-creating-validators
最终,您需要在controller方法内声明您的验证。如果您创建了一个受保护的函数进行验证,则可以在同一控制器的方法中调用它。
问题是,由于受到保护,您将无法在其他控制器中使用它。不过,这很好,您不想像这样将控制器彼此耦合。
答案 1 :(得分:0)
好的,我看到有很多方法可以做到,就像这样:
public function rules()
{
$ID_PERSONNELS = $this->user;
var_dump($ID_PERSONNELS);
return [
'PRENOM'=>'required|min:3|max:20|alpha',
'NOM'=>'required|min:3|max:20|alpha',
'email' => 'required|email|max:255|unique:PERSONNELS,email,' . $ID_PERSONNELS.',ID_PERSONNELS',
'password'=>'required|nullable|min:6',
'password-confirm'=>'required|nullable|min:6'
];
}
我还有一个问题,我想在密码字段中输入最小值6,但是该字段必须为空,但是nullable
方法对我不起作用):