【问题标题】:How to show Validation message in Controller?如何在控制器中显示验证消息?
【发布时间】:2013-07-10 11:47:54
【问题描述】:

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

我的代码:

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

【问题讨论】:

    标签: php laravel laravel-3


    【解决方案1】:

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

    请参阅validator docs

    【讨论】:

    • 你能告诉我怎么做吗?我不想将它们传递到视图中
    • 在您的控制器中,您可以像这样循环验证消息:foreach($validation->messages() as $message) { /**/ }
    【解决方案2】:

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

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

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

    【讨论】:

    • 很棒的解决方案人 +1
    【解决方案3】:

    这是我刚刚在 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())。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      • 2021-10-28
      • 2011-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-31
      相关资源
      最近更新 更多