Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 密码重置在验证时不返回错误消息_Php_Laravel_Laravel 5_Laravel Blade_Laravel 5.8 - Fatal编程技术网

Php 密码重置在验证时不返回错误消息

Php 密码重置在验证时不返回错误消息,php,laravel,laravel-5,laravel-blade,laravel-5.8,Php,Laravel,Laravel 5,Laravel Blade,Laravel 5.8,重置密码后,用户将收到带有密码重置链接和令牌的电子邮件。 通过打开此链接,用户将看到密码重置表单(视图) 在这之前一切都很好。。但每当我通过错误的电子邮件触发“电子邮件无效”错误警告时,它都不会给我任何信息 检查C:\Users\richa\Projects\globeguru\cms\vendor\laravel\framework\src\illighted\Foundation\Auth\ResetsPasswords.php我在第3行遇到了responsibe函数: php 这一行:

重置密码后,用户将收到带有密码重置链接和令牌的电子邮件。 通过打开此链接,用户将看到密码重置表单(视图)

在这之前一切都很好。。但每当我通过错误的电子邮件触发“电子邮件无效”错误警告时,它都不会给我任何信息

检查
C:\Users\richa\Projects\globeguru\cms\vendor\laravel\framework\src\illighted\Foundation\Auth\ResetsPasswords.php
我在第3行遇到了responsibe函数:

php

这一行:

$request->validate($this->rules(), $this->validationErrorMessages());
这就引出了这个函数:

protected function validationErrorMessages()
{
    return [];
}
我的问题是-如何触发错误消息并通过
validationErrorMessages()
函数返回它?

[编辑] 根据要求,这里是重置表单HTML

@节('reset-form')
@if(会话(“状态”))
成功

{{session('alert')}

&时代; @恩迪夫 @错误('电子邮件') 错误

{{$message}}

&时代; @恩德罗 @错误('密码') 错误

{{$message}}

&时代; @恩德罗 @错误('password\u confirmation') 错误

{{$message}}

&时代; @恩德罗 {{{{('auth.reset{u title')} @csrf {{{('auth.email')} @错误('电子邮件') {{$message}} @恩德罗 {{{('auth.password')} @错误('密码') {{$message}} @恩德罗 {{{{('auth.password\u repeat')} @错误('password\u confirmation') {{$message}} @恩德罗 @端部
同时转储
$errors
我得到以下响应:

{"token":["The token field is required."]} 
提供了
@csrf
,所以我不知道还有什么原因会导致这种情况

更新#2

好的,我只是惊慌失措,在
reset
函数中的每个步骤上放置
dump
,当我在验证之前放置它时,如下所示:

公共功能重置(请求$Request)
{
转储($request);//验证($this->rules(),$this->validationErrorMessages());
//在这里,我们将尝试重置用户的密码。如果成功,我们将
//将更新实际用户模型上的密码并将其保留到
//否则我们将解析错误并返回响应。
$response=$this->broker()->reset(
$this->credentials($request),function($user,$password){
$this->resetPassword($user,$password);
}
);
//如果成功重置密码,我们将用户重定向回
//应用程序的主身份验证视图。如果有错误,我们可以
//将它们重定向回其错误消息所在的位置。
return$response==Password::Password\u RESET
?$this->sendResetResponse($request,$response)
:$this->sendResetFailedResponse($request,$response);
}
它返回带有
请求的页面
转储,并显示以下消息:
重定向到http://localhost:8000/password/reset/a98f717fd25f4c5b32e2ee81e1276058e294ea6536509d1a223d131bcc0dd12c.
这清楚地表明在验证和重置之间存在重定向

如果我在之后转储,它不会返回任何内容,因此它清楚地表明它在
$request->validate($this->rules(),$this->validationErrorMessages())期间中断此步骤

以下是Laracasts讨论链接:


好的,我通过更改html来修复它:


@csrf
为此:


@csrf
dump($request->all())
返回:

array:5 [▼
  "_token" => "RlwpqsSHcN42PaEWvIMHCYjjowAnox8ApTA9eeUV"
  "token" => "2fb28348a08eac8386a2276be5a7ed5a2847adef39b4ed769157e2213bc208c9"
  "email" => "admin@demo.com"
  "password" => "password"
  "password_confirmation" => "password"
]

Redirecting to http://localhost:8000/login. 

因此,现在这可以工作了,虽然我知道
令牌
\u令牌
不同,一个用于seision,另一个用于密码重置,我仍然不明白我的解决方案与原来的
Laravel Auth
有什么不同,那里只有
@csrf
命令被调用,然后由Blade编译,返回所有必要的隐藏输入。

你能为视图显示代码吗?只需摘录电子邮件字段中的错误消息处理就可以了。
array:5 [▼
  "_token" => "RlwpqsSHcN42PaEWvIMHCYjjowAnox8ApTA9eeUV"
  "token" => "2fb28348a08eac8386a2276be5a7ed5a2847adef39b4ed769157e2213bc208c9"
  "email" => "admin@demo.com"
  "password" => "password"
  "password_confirmation" => "password"
]

Redirecting to http://localhost:8000/login.