拉拉维尔,在同一页面上注册和登录.两个表单上的错误



我正在与Laravel合作开发一个网站,我在同一页面上有注册和登录表格。唯一的问题是,如果我在登录表单上输入了错误的密码,错误将显示在密码输入下方的两个表单上。

我已经用谷歌搜索过这个,我看到其他一些人有这个问题,但他们都在开发低于 5.4 的版本,所有这些解决方案在 5.4 版本中都不同。有谁知道我到底需要改变什么才能完成这项工作?到目前为止,我已经将表单中的名称更改为"login_password"和"register_password",但这只会给我错误。

如果您要更改输入名称,则需要更新LoginControllerRegisterController

登录控制器

您将需要添加以下内容:

protected function validateLogin(Request $request)
{
    $this->validate($request, [
        $this->username() => 'required', 'login_password' => 'required',
    ]);
}
protected function credentials(Request $request)
{
    return [
        $this->username() => $request->input($this->username()),
        'password'        => $request->input('login_password'),
    ];
}

RegisterController (这些方法应该已经存在于控制器中,您只需要在适用的情况下将password更新为 register_password(

/**
 * Get a validator for an incoming registration request.
 *
 * @param  array  $data
 * @return IlluminateContractsValidationValidator
 */
protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'register_password' => 'required|min:6|confirmed',
    ]);
}
/**
 * Create a new user instance after a valid registration.
 *
 * @param  array  $data
 * @return User
 */
protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['register_password']),
    ]);
}

您还需要通过将以下内容与其他use语句放在文件顶部来包含Request

 use IlluminateHttpRequest;

希望这有帮助!

最新更新