我有一个运行 Laravel 5.2(Laravel 框架版本 5.2.39
)的新站点。注意:路由文件未使用不再需要的 web 中间件组,它可能会导致此问题。
我对 ContactController
的 store
方法进行了简单验证:
$this->validate($request, [
'ContactFirst' => 'required|max:25',
'ContactLast' => 'required|max:25',
'ContactRole' => 'required|max:25',
'ContactEmail' => 'email|max:255',
'ContactPhone' => 'max:255',
]);
当我故意使验证失败时,网站会重定向回表单,但错误包是空的,因此不会提供任何错误信息。
在表单 View (resources/contacts/new.blade.php
) 中,我将文档中的以下代码和转储放在一起:
{{var_dump($errors)}}
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
页面(如我所说)重定向回表单并填充输入。但是 $errors
是空的,没有打印任何消息:
object(Illuminate\Support\ViewErrorBag)[285]
protected 'bags' =>
array (size=0)
empty
最佳答案
实际上我不知道你的代码是否可行,因为没有确切的代码表明它会返回错误。
我确实使用 $validator->fails()
进行验证检查。
检查这个例子:
$validator = Validator::make($request->all(), [
'ContactFirst' => 'required|max:25',
'ContactLast' => 'required|max:25',
'ContactRole' => 'required|max:25',
'ContactEmail' => 'email|max:255',
'ContactPhone' => 'max:255',
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
但我确实建议您创建扩展 Request
类的 ContactFormRequest
类,并将其放入存储参数中(屏幕截图:http://joxi.ru/eAO55BF4glwRmo):
<?php namespace App\Http\Requests;
class ContactFormRequest extends Request {
public function rules() {
return [
'ContactFirst' => 'required|max:25',
'ContactLast' => 'required|max:25',
'ContactRole' => 'required|max:25',
'ContactEmail' => 'email|max:255',
'ContactPhone' => 'max:255',
];
}
}
然后在你的 Controller store
方法中这样做:
public function store(ContactFormRequest $request) {
// here write code as if validation is valid
}
如果在这个操作之后你仍然不能得到错误那么放:
<?php var_dump(get_defined_vars()) ?>
在 {{var_dump($errors)}}
之前
关于php - Laravel 5.2 验证错误——错误包为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37978704/