7

我尝试在 Controller 中显示错误消息,但它不起作用,但是当我使用 时dd,它可以工作。

我的代码:

if ($validation->fails())
{
    /*Doesn't work
    foreach ($validation->fails() as $messages) {
        $messages // Doesn't work
    }
    */
    dd($validation->errors); //This works
}
4

3 回答 3

12

我注意到这里提供的示例都没有真正起作用!所以给你。这是我在意识到validator->messages()返回一个不可检索的受保护对象后找到的解决方案。

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

}

我会引用MessageBag,这就是messages()返回的内容。并且对于 Validator 类的额外确认 - 参考这个

于 2013-10-18T15:55:54.990 回答
2

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

请参阅验证器文档

于 2013-07-12T02:59:04.907 回答
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 答案的扩展

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

于 2015-07-24T14:09:24.013 回答