我正在使用Laravel 5.1,我有一个带有侧边栏的创建表单,它还有一个登录表单。每当我提交创建表单并且它有错误时,我都会在登录表单和创建表单上看到错误。我明白为什么会这样。我在两个表单上使用@include('errors.list')。
list.php文件内的错误
@if ($errors->any())
<div class="alert alert-danger alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
@foreach ($errors->all() as $error)
<strong>• {{$error}}</strong><br/>
@endforeach
</div>
@endif
现在,我想在验证失败时更改登录表单上的错误值。我使用的是默认身份验证表单。我想创造类似的东西 如果验证失败 - &gt;返回('login_errors')而不是默认错误,所以我可以使用类似@if($ login_errors-&gt; any())
第二个问题是,如果不使用自定义验证,我该如何反向?我正在使用$ request,如果我想使用custom_errors将错误返回到创建表单。
答案 0 :(得分:0)
我希望我理解正确 - 您想要自定义错误消息?以下是Laravel为此提供的文档:http://laravel.com/docs/5.1/validation#working-with-error-messages(向下滚动一点)。使用此功能,您可以继续使用相同的$errors->any()
来检查是否存在任何错误消息。
答案 1 :(得分:0)
首先,你需要一些方法来区分表格。最简单的方法是在<form>
中添加一个隐藏字段,用于此类
<input type="hidden" name="loginFromSidebar" value="1">
为了能够对新创建的触发器采取行动,您需要通过更改postLogin
中的第24行来覆盖AuthenticatesAndRegistersUsers
特征中的app/Http/Controllers/Auth/AuthController.php
功能
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
到
use AuthenticatesAndRegistersUsers {
postLogin as laravelPostLogin;
}, ThrottlesLogins;
这将重命名larval提供的postLogin
函数,以便我们可以将它们作为垫片放在它前面。
您的垫片函数应命名为postLogin
,然后应调用现在重命名为laravelPostLogin
的内置函数。
要跟踪使用的表单,我建议在larvel中使用session flash feature。在所有登录尝试中设置此项是完全正确的,无论登录是否成功。 flash变量只能持续一页加载,因此如果登录成功,它将不会受到影响。 postLogin
应添加到AuthController.php
中的某处,可能看起来像这样
public function postLogin(Request $request)
{
if($request->has('loginFromSidebar')) {
\Session::flash('loginFromSidebar', true);
}
return $this->laravelPostLogin($request);
}
然后你可以使用
@if(Session::has('loginFromSidebar'))
@include('errors.list')
@endif
侧栏中的,以及不在侧栏中的形式的反转。