Php Laravel验证:检查验证程序失败的原因
是否有办法检查验证程序是否因Php Laravel验证:检查验证程序失败的原因,php,validation,laravel,laravel-4,Php,Validation,Laravel,Laravel 4,是否有办法检查验证程序是否因唯一性规则而失败 $rules = array( 'email_address' => 'required|email|unique:users,email', 'postal_code' => 'required|alpha_num', ); $messages = array( 'required' => 'The :attribute fi
唯一性规则而失败
$rules = array(
'email_address' => 'required|email|unique:users,email',
'postal_code' => 'required|alpha_num',
);
$messages = array(
'required' => 'The :attribute field is required',
'email' => 'The :attribute field is required',
'alpha_num' => 'The :attribute field must only be letters and numbers (no spaces)'
);
$validator = Validator::make(Input::all(), $rules, $messages);
if ($validator->fails()) {
用外行的话说,我基本上想知道:“验证失败是因为电子邮件地址不唯一吗?”这将显示一个错误并告诉您失败的原因:
控制器
if($validation->fails()){
return Redirect::back()->withErrors($validation)->withInput();
}
foreach($errors->all() as $error) {
echo $error;
}
在刀片模板中添加以下内容:
@foreach($errors->all() as $error)
<div>
{{$error}}
</div>
@endforeach
@foreach($errors->all()作为$error)
{{$error}}
@endforeach
这将返回一条包含任何错误的消息。电子邮件不匹配。字段是必填的。废话
您还可以从$message中删除该电子邮件阵列。验证器将为您处理所有这些。您只想在需要自定义消息时使用它
您还可以尝试使用var_转储此语句:
变量转储($validation->errors());死亡 在返回的失败规则数组中检查特定规则
if ($validator->fails()) {
$failedRules = $validator->failed();
if(isset($failedRules['email_address']['Unique'])) {
...
可能提供通过其他验证规则的输入?(并检查错误消息)。但您可以确切地看到我正在检查的输入<代码>电子邮件地址
和邮政编码
是,但在进入视图之前,我需要知道我的控制器中出现了什么故障。在控制器中,您可以使用相同的foreach,它将显示在控制器中。我编辑了我的答案,这样您就可以看到$errors->all()生成对非对象上的成员函数all()的调用对不起,是的,这不起作用,因为它应该重定向回上一页。我将更新答案。检查我的答案您可能只需要使用var_dump($validation->errors())对结果进行var转储;死亡转换为json后,它似乎返回{“email_address”:{“Unique”:[“users”,“email”]}
updated。你必须按字段检查它,每个字段都有自己的规则数组。几乎,但它仍然总是返回false,尽管我可以看到它是真的。更新后,规则Unique
是一个键,因此在数组中不起作用:)所以我使用isset