use*_*860 3 php validation laravel laravel-blade laravel-5.3
我正在尝试使用Laravel 请求验证方法制作登录页面
凭证验证 -> 如果用户未经过身份验证,它将返回“密码错误......”的错误
我在两种不同情况下看到错误:-
1- 当点击登录按钮而不填写任何内容时:-
htmlspecialchars() expects parameter 1 to be string, object given (View: C:\xampp\htdocs\nfbweb\resources\views\login.blade.php)
Run Code Online (Sandbox Code Playgroud)
2-当填写随机/错误的用户名和密码时:
ErrorException in f65ed669c524327dfe53b3286e027354370e4cf5.php line 13:
Call to a member function all() on string (View: C:\xampp\htdocs\nfbweb\resources\views\login.blade.php)
Run Code Online (Sandbox Code Playgroud)
这是我的登录视图文件:-
<h1>Login Page</h1>
@if (session()->has('errors'))
<div class="alert alert-danger">
<ul>
{{session('errors')}}
</ul>
</div>
@endif
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<form action="{{route('dologin')}}" method="post">
{{csrf_field()}}
Username: <input type="text" name="username" autocomplete="off">
<br>
<br>
Password: <input type="password" name="password">
<br>
<button>Login</button>
</form>
Run Code Online (Sandbox Code Playgroud)
这是我的登录控制器:
public function doLogin(Request $request)
{
$this->validate($request, [
'username' => 'required|max:255',
'password' => 'required',
]);
$client = new GuzzleHttp\Client(['base_uri' => 'https://domainname/api/v1/']);
try {
$response = $client->request('POST', 'login', [
'form_params' => [
'username' => $request->username,
'password' => $request->password,
],
]);
}
catch (ClientException $exception) {
return back()->with('errors', 'Invalid username and/or password');
}
}
Run Code Online (Sandbox Code Playgroud)
我删除了视图文件中的身份验证错误消息
@if (session()->has('errors'))
<div class="alert alert-danger">
<ul>
{{session('errors')}}
</ul>
</div>
@endif
Run Code Online (Sandbox Code Playgroud)
laravel 请求验证器工作正常。
当我删除视图文件中的验证器错误消息时,身份验证错误消息有效!
我在两条错误消息中是否有任何冲突?
我怎样才能让它们都工作
通过更改以下内容来解决:- session('errors') 更改为 session('error')
laravel 验证器会话名称和我设置的用于返回身份验证错误消息的会话名称存在冲突