首页 文章

Laravel 5.2验证错误 - 错误包空

提问于
浏览
4

我有一个运行Laravel 5.2( Laravel Framework version 5.2.39 )的新站点 . 注意:routes文件不使用Web中间件组,不再需要该组并且可能导致此问题 .

我对 ContactControllerstore 方法进行了简单的验证:

$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 回答

  • 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)}} 之前

  • 3

    这似乎与在Homestead上运行类似站点的多个版本的错误有关 . 销毁盒子并重建它解决了这个问题 .

  • 0

    我使用相同的版本 . 这是我用来显示错误的内容 .

    @if($errors->any())
    <ul class="alert alert-danger">
    @foreach($errors->all() as $error)
    <li>{{$error}}</li>
    @endforeach
    </ul>
    @endif
    

相关问题