如何在Controller中显示验证消息Laravel?

时间:2013-07-12 01:58:24

标签: php laravel laravel-3

我尝试在控制器中显示错误消息,但它不起作用,但是当我尝试dd时,它可以正常工作

我的代码:

if ($validation->fails())
{
    /*Doesnt Work
    foreach ($validation->fails() as $messages) {
        $messages // Doesnt Work
    }
    */
    dd($validation->errors); //This Is works
}

3 个答案:

答案 0 :(得分:9)

我注意到这里提供的示例实际上都没有效果!所以,你走了。在认识到“validator-> messages()”返回一个无法检索的受保护对象后,这是我找到的解决方案。

if ($validator->fails())
{
    foreach ($validator->messages()->getMessages() as $field_name => $messages)
    {
        var_dump($messages); // messages are retrieved (publicly)
    }

}

我会参考: http://laravel.com/api/source-class-Illuminate.Support.MessageBag.html

MessageBag,这是“messages()”返回的内容。对于Validator类的额外确认 - 参考: http://laravel.com/api/class-Illuminate.Validation.Validator.html

答案 1 :(得分:2)

$validation->fails()返回输入是否通过验证的布尔值。您可以从$validation->messages()访问验证消息,或将它们传递到视图,以便将它们绑定到$errors变量。

请参阅validator docs

答案 2 :(得分:0)

这是我刚在artisan 5.0控制台命令中使用的,用于验证参数。这是fire()方法:

    // Create the validator.
    $validator = Validator::make(
        $this->argument(),
        ['field1' => 'required|other|rules']
    );

    // Validate the arguments.
    if ($validator->fails())
    {
        // Failed validation.

        // Each failed field will have one or more messages.
        foreach($validator->messages()->getMessages() as $field_name => $messages) {
            // Go through each message for this field.
            foreach($messages AS $message) {
                $this->error($field_name . ': ' . $message);
            }
        }

        // Indicate the command has failed.
        return 1;
    }

这是@tfont

答案的延伸

如果此命令未作为控制台命令(即CLI,命令行)运行,则可能需要更改消息的发送位置($this->error()