用户登录

在验证失败的时候,我们可以使用 validator 的 messages 方法得到失败的具体的原因 ... 定义一个变量,存储得到的错误信息 ..

$messages = $validator->messages();

这样如果出错的话, $messages 里面,就会包含具体的错误。使用它的 all 方法,可以得到所有的错误信息。如果想得到个别表单元素的错误信息,可以使用 get 方法,再这个方法里,指定一下表单元素的名字 ... 这样会得到在这个表单元素上的错误 ...

下面,我们用一个 foreach 语句,去循环的输出所有的错误 ... foreach ... $messages ... 用它的 all 方法 .. as $message ... 每次循环,要做的事就是去输出这个 $message ... 在它后面再加上一个 <br> 标签 ... 这样每条错误信息都会显示在新的一行 ...

foreach ($messages->all() as $message) {
echo $message . '<br>';
}

注释掉 return 这行代码 ... 然后保存 ... 回到浏览器上看一下 ...

直接点击 确认 ...

这次会给我们显示出具体发生的错误 ... The username field is required. 意思就是 username 这个表单元素是一个必填项 ..

withErrors

这个错误信息可以交给视图去处理,下面我们再去改进一下 ... (#返回)

如果验证失败 ... 把用户重定向到 signup 这个页面 ... return ... Redirect .. to ,重定向到 .. signup ... 然后我们用一个 withErrors ..

这个方法会把验证失败的信息传递到视图上 .. 因为是通过 session 传递的 .. 所以,这些错误信息只在下一次请求是可用的 ...

这里,我们不需要再去先把错误信息用 messages 方法提取出来了 .. 可以直接把这个 validator 交给这个方法 ...

return Redirect::to('signup')->withErrors($validator);

然后注释掉其它的代码 ...

下面,我们可以在视图上,把错误信息显示出来 .. 可以把它放在注册表单这个视图用的布局上 ...

打开 master 这个布局 ... 在显示错误之前,先去判断一下,是不是有可以显示的错误 ...

如果有 ... 就用 foreach ... 循环把错误都显示出来 ... 注意这里的 $errors 在所有的视图上都是可以使用的 ... Laravel 会把错误信息放到它里面。

在每条错误信息的周围,可以添加一组段落标签 .. 上面加上几个类 ... 可以给错误信息添加点样式 ...

@if($errors)
@foreach ($errors->all() as $error)
<p class="alert alert-warning">{{ $error }}</p>
@endforeach
@endif

下面, 我们再去试一下 ...

回到注册帐户的页面 ... 点击 确定 ...

验证失败 ... 会把用户重定向到这个页面上 ... 并且在这里,会显示出错误信息 ...

withInput

重定向到这个页面以后,用户在表单上填写的东西都会被刷新掉 .. 想要保留用户填写的内容 ... 可以使用一个 withInput 方法 ...

(#返回),打开 AccountController 控制器 ... 在这个 Redirect 的后面 .. 再加上一个 withInput() ...

return Redirect::to('signup')->withErrors($validator)->withInput();

保存 ... 再去试一下 ..

我们可以在邮件这里,输入点东西 ... wanghao@ninghao.net

点击 确定 ... 因为没有填写用户名,所以会把我重定向回到 signup 这个页面 ... 同时,我之前在这个表单上填写的内容也会保留住 ... 这样我可以再去修改错误的地方 .. 然后重新提交 ...

处理错误信息《 Laravel 身份验证 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点