当前位置: 首页 > 知识库问答 >
问题:

更改Laravel ui auth Forget password表单中的输入名称

段超
2023-03-14

我已经将所有登录、创建用户和忘记密码合并到同一个页面上,对于错误处理,3个表单上的“电子邮件”输入应该有所不同。我已将登录表单的电子邮件输入中的名称默认设置为:“电子邮件”。我将创建用户的名称设置为:“注册电子邮件”,并更改了RegisterController中的“validator”功能,使其看起来像这样:

protected function validator(array $data)
{
    $validator = Validator::make($data, [
        'register-email' => ['required', 'string', 'email', 'max:255', 'unique:users,email'],
        'register-password' => ['required', 'string', 'min:8', 'max:255', 'confirmed'],
    ]);
    $validator->setAttributeNames([
        'register-email' => 'email',
        'register-password' => 'password',
    ]);
    return $validator;
}

它就像一个符咒!

现在我将电子邮件输入名称设置为忘记表单上的“忘记电子邮件”,但我不知道如何更正忘记密码控制器来处理此问题。

我尝试使用更新的名称覆盖以下函数:

protected function validateEmail(Request $request)
{
    $request->validate(['forgot-email' => 'required|email']);
}
protected function credentials(Request $request)
{
    return $request->only('forgot-email');
}
protected function sendResetLinkFailedResponse(Request $request, $response)
{
    if ($request->wantsJson()) {
        throw ValidationException::withMessages([
            'forgot-email' => [trans($response)],
        ]);
    }

    return back()
        ->withInput($request->only('forgot-email'))
        ->withErrors(['forgot-email' => trans($response)]);
}

但我只是得到一个错误说:

SQLSTATE[42703]:未定义的列:7错误:列“忘记的电子邮件”不存在第1行:从“用户”中选择*,其中“忘记的电子邮件”=“1$limit 1^(SQL:从“用户”中选择*,其中“忘记的电子邮件”=test@domain.com限制1)

问题很明显,它认为输入名与列名相同,但这里的情况并非如此。那么,我该如何告诉管理员使用“忘记的电子邮件”作为电子邮件呢?

共有1个答案

蒯宏达
2023-03-14

我找到了解决办法。我只是将忘记的电子邮件请求合并到validateEmail函数中的电子邮件请求,如下所示:

protected function validateEmail(Request $request)
{
    $request->merge(['email' => $request->get('forgot-email')]);
    $request->validate(['email' => 'required|email']);
}

protected function credentials(Request $request)
{
    return $request->only('email');
}

protected function sendResetLinkFailedResponse(Request $request, $response)
{
    if ($request->wantsJson()) {
        throw ValidationException::withMessages([
            'forgot-email' => [trans($response)],
        ]);
    }

    return back()
        ->withInput($request->only('email'))
        ->withErrors(['forgot-email' => trans($response)]);
}

更新:这只是解决方案的一部分。当我在blade中执行@错误时,错误仍然以“电子邮件”的形式发送

更新2:好的,如果验证失败,错误被绑定到“email”,但对于所有其他错误,它是:“忘记email”,所以我只是将验证方法更改为在“忘记email”而不是email上验证,现在它似乎工作正常。validateEmail函数现在如下所示:

protected function validateEmail(Request $request)
{
    $request->merge(['email' => $request->get('forgot-email')]);
    $request->validate(['forgot-email' => 'required|email']);
}
 类似资料:
  • 我正在学习反应和反应形式,并试图创建一个动态和可扩展的形式。我已经设置了具有的状态,并基于该类型,显示相应的输入类型(因此它可以是文本、文本区域、单选、选择、日期或复选框)。我试图写一个函数,这样它将动态设置基于的表单输入,但我卡住了试图实现相同的变化。 所以如果,或,等等。 请检查此工作代码沙盒。 看看这个完整的代码片段:- 我仍在努力学习并花时间与ReactJS在一起,因此任何帮助都将不胜感激

  • 我用的是bootstrap3。我想使登录表单更小,并在输入之间更改大小,因为现在它们太近了。 这是我的密码 怎么做呢? 形式

  • 当表单的任何输入被点击(或更改)时,提交表单的“AngularJS方式”是什么? 我很想使用jQuery并简单地执行,但它可能值得正确学习。 我曾尝试执行,但这里的错误是>范围内的

  • 问题内容: 是否可以更改导入的python文件的名称? 在我在Django的views.py中,我有 在我的模型中,我有一个客户端模型,但是当我使用该文件时,我导入了客户端,但是在我的客户端模型中出现了AttributeError … 我的问题是,是否可以更改in的名称? 谁能对我的情况有个想法? 提前致谢 … 问题答案: 是的,您可以使用关键字。 正是出于这个目的。此处的文档对此进行了说明: h

  • 问题内容: 在laravel中,我们可以通过获得输入值。我尝试通过这样做来更改值。但是然后,我得到了错误消息“” 。 我们是否可以更改输入值,以便在以后调用时获得新的修改后的值? 谢谢。 问题答案: 您可以用来替换单个项目。 或用于替换整个输入数组。 这是文档的链接

  • 我想在html表单中将用户输入限制为正数。 我知道您可以设置min=“0”,但是可以通过手动输入负数绕过此设置。 有没有其他方法可以解决这个问题而不用编写验证函数?