laravel打印验证错误消息

时间:2014-06-17 13:12:00

标签: php laravel laravel-4

我在laravel http://laravel.com/docs/validation#working-with-error-messages中阅读了有关验证的官方页面,我跟着他们。所以我的代码是

 $input = Input::all();
        $validation = Validator::make($input, Restaurant::$rules);

        if ($validation->passes())
        {
            Restaurant::create($input);

            return Redirect::route('users.index');
        }
        else{
            $messages = $validation->messages();
            foreach ($messages->all() as $message)
            {
                echo $message + "</br>";
            }
        }

我可以看到错误消息,但它只是00。有没有更好的方法来了解错误在哪个表单的字段中以及错误描述是什么?

我已经有rules,我现在的输入违反了规则,但我需要阅读错误消息

2 个答案:

答案 0 :(得分:5)

 $messages = $validation->messages();

            foreach ($messages->all('<li>:message</li>') as $message)
            {
                echo $message;
            }

Official Documentation

  

在Validator实例上调用messages方法后,您将收到一个MessageBag实例,该实例具有各种方便的方法来处理错误消息。

根据MessageBag documentation功能全部获取包中每个键的所有消息。

答案 1 :(得分:0)

您可以通过errors()对象访问错误,并遍历所有规则的密钥。

这样的事情:

Route::get('error', function(){

    $inputs = array(
        'id'        => 5,
        'parentID'  => 'string',
        'title'     => 'abc',
    );

    $rules = array(
        'id'        => 'required|integer',
        'parentID'  => 'required|integer|min:1',
        'title'     => 'required|min:5',
    );

    $validation = Validator::make($inputs, $rules);

    if($validation->passes()) {
        return 'passed!';
    } else {
        $errors = $validation->errors(); //here's the magic
        $out = '';
        foreach($rules as $key => $value) {
            if($errors->has($key)) { //checks whether that input has an error.
                $out.= '<p>'$key.' field has this error:'.$errors->first($key).'</p>'; //echo out the first error of that input
            }
        }

        return $out;
    }

});