目前,如果存在验证错误,它们都会作为<ul>
元素中的<li>
元素显示在页面顶部。我想这样,如果有一个The username field is required.
错误,让它在用户名下输入,同样的,对于密码错误。我该怎么做?
signIn视图:
<ul>
@foreach ($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
</ul>
<div class="wrapper">
<form action='{{ route('signin') }}' method='POST'>
<label>Username</label>
<input class='input' type='text' name='username' placeholder='Username' value='{{ Request::old('username') }}'>
<label>Password</label>
<input class='input' type='password' name='password' placeholder='Password' value='{{ Request::old('password') }}'>
{{ csrf_field() }}
<button class='Submit' type='submit'>Log In</button>
</form>
</div>
signIn函数:
public function signIn(Request $request){
$this->validate($request, [
'username' => 'required|max:120',
'password' => 'required|min:5|max:12'
]);
$username = $request['username'];
$password = $request['password'];
if (Auth::attempt(['username' => $username, 'password' => $password])){
return redirect()->back();
} else {
return redirect()->back();
}
}
发布于 2018-07-27 09:35:36
最好的方法是创建一个partial,这样你就不会重复相同的代码块,或者如果你想更新错误的包装,它就在一个地方。
在views/partials,中使用以下超文本标记语言创建invalid.blade.php
@if($errors->has($field))
<span>{{ $errors->first($field) }}</span>
@endif
这将检查errors数组以确保特定字段的错误存在。first()方法从error数组中获取该字段的第一个错误(有些字段可能有多个错误)。
现在,在任何输入字段下,只需添加以下行,将FIELD_NAME替换为您直接在其下的输入字段的名称(即:用户名)。
@include('partials.invalid', ['field' => 'FIELD_NAME')
https://stackoverflow.com/questions/51549266
复制相似问题