Laravel 5.2验证错误 - 错误包空

时间:2016-06-22 21:37:21

标签: php validation laravel laravel-5.2

我有一个运行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

3 个答案:

答案 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";
            }