我有一个运行Laravel 5.2(Laravel Framework version 5.2.39
)的新网站。注意:routes文件不使用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',
]);
当我故意无法通过验证时,网站会重定向回表单,但错误包是空的,因此不会提供错误信息。
在表单视图(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
答案 0 :(得分:3)
实际上我不知道您的代码是否可行,因为没有确切的代码表明它会返回错误。
我确实使用$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();
}
但我建议您创建扩展ContactFormRequest
类的Request
类并将其放入商店参数(屏幕截图: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',
];
}
}
然后在您的控制器store
方法中执行以下操作:
public function store(ContactFormRequest $request) {
// here write code as if validation is valid
}
如果在此操作之后你仍然无法得到错误,所以:
<?php var_dump(get_defined_vars()) ?>
之前{{var_dump($errors)}}
答案 1 :(得分:3)
这似乎与在Homestead上运行类似网站的多个版本的错误有关。销毁盒子并重建它解决了这个问题。
答案 2 :(得分:0)
我使用相同的版本。这是我用来显示错误的内容。
public FGLFileTransferService()
{
// *** replaced this
InitializeComponent();
// *** replaced this
eventLog1 = new System.Diagnostics.EventLog();
if (!EventLog.SourceExists("FGLTransferServiceSource"))
{
EventLog.CreateEventSource("FGLTransferServiceSource", "FGLTransferServiceLog");
}
eventLog1.Source = "FGLTransferServiceSource";
eventLog1.Log = "FGLTransferServiceLog";
}