Laravel会话数组值

时间:2013-05-02 16:59:16

标签: php laravel laravel-3

我刚开始测试Laravel。我正在使用带有一些字段的表单并尝试使用Laravel的内置验证器类来验证输入。

$input = Input::all();
$rules = array(
        'fname' => 'required|max:100',
        'lname' => 'required|max:100',
        'email' => 'required|email',
            );
$validation = Validator::make($input, $rules);
if ($validation->fails()){
            return Redirect::to('inputform')
                            ->with('input_errors', $validation->errors);
            }

一切顺利,验证检查有效。验证失败时,我将错误放在名为input_errors的会话变量中,并将其传递给视图。我的问题是我似乎无法显示错误。我使用foreach尝试blade templating engine循环,如下所示:

@foreach (Session::get('input_errors') as $message)
    {{ What Should I put here? }}
@endforeach

如何显示作为数组返回的错误。我尝试将其引用为$message[0][0],但它无效。

感谢。

编辑:对不起,忘了提到我正在使用Laravel 3

1 个答案:

答案 0 :(得分:4)

获取错误的正确语法是......

$messages= $validation->messages();

不幸的是,仅凭这一点并不会让你回复这些消息。它将返回一个MessageBag实例。这允许您提取所需的任何特定消息或所有消息。

如果你想获得所有信息,现在你可以做...

$errors = $messages->all();

这将返回一个数组,您可以在视图中循环显示错误。还有一些方法可以在特定字段上获取错误,例如......

$firstNameError = $messages->first('fname');

$firstNameErrors = $messages->get('fname');

我还建议在向视图发送错误消息时使用...

->with_errors($validation);

这会将错误刷新到会话并自动假设您将它们作为$errors变量发送。然后,您可以使用。

在视图中显示错误
{{ $errors->first('fname') }}  // Blade approach
<?php echo $errors->first('email'); ?> // Non-blade approach

这样,您不必在视图中添加逻辑,尝试确定变量是否存在,然后再尝试回显它。

http://four.laravel.com/docs/validation