【发布时间】:2016-10-25 02:34:47
【问题描述】:
我目前正在关注登录表单上的视频教程。这是 Auth::attempt() 失败时使用的代码:
return back()->withInput();
这应该让用户返回表单并再次填写输入内容(电子邮件、密码)。但是,当登录正常工作时,这些字段保持为空。
我该如何解决这个问题?
这是我的表格:
{!! Form::open(array('route' => 'handleLogin')) !!}
<div class="form-group has-feedback">
{!! Form::text('email', null, array('class' => 'form-control', 'placeholder' => 'EMail')) !!}
<span class="glyphicon glyphicon-envelope form-control-feedback"></span>
</div>
<div class="form-group has-feedback">
{!! Form::password('password', array('class' => 'form-control', 'placeholder' => 'Password')) !!}
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
</div>
<div class="row">
<div class="col-xs-8">
<div class="checkbox icheck">
<label>
<input type="checkbox"> Remember Me
</label>
</div>
</div>
<!-- /.col -->
<div class="col-xs-4">
{!! Form::token() !!}
{!! Form::submit(null, array('class' => 'btn btn-primary btn-block btn-flat')) !!}
</div>
<!-- /.col -->
</div>
{!! Form::close() !!}
编辑:发现我的以下代码可用于登录,但当登录凭据错误时不会执行 else 语句。为什么?
public function handleLogin(Request $request)
{
$this->validate($request, User::$login_validation_rules);
$data = $request->only('email', 'password');
if(\Auth::attempt($data)){
return redirect()->intended('home');
}else {
return back()->withInput();
}
}
【问题讨论】:
-
你使用的是什么 Laravel 版本?
-
@TiagoRL 我正在使用 Laravel 5.2。还用我发现的东西编辑了我的问题。
-
如果任何
$this->validate()规则失败,您将立即被重定向回来。添加文档laravel.com/docs/master/… 的这一部分中包含的代码。如果显示任何内容,则表示正在触发 validate(),这就是代码没有到达else的原因。我不能肯定地说,因为我不知道你定义了什么规则。 -
另外,关于输入,无论如何,默认情况下,Laravel 已经将输入发回,所以,你可以尝试添加
old('email')看看它是否有效。{!! Form::text('email', old('email'), array('class' => 'form-control', 'placeholder' => 'EMail')) !!} -
@TiagoRL 已添加此代码。没有收到任何错误。这些是我的规则:
'email' => 'required|email|exists:users', 'password' => 'required'。 old() 也不可悲地工作。提前谢谢你。