【问题标题】:Display custom error message in MVC view with PHP使用 PHP 在 MVC 视图中显示自定义错误消息
【发布时间】:2015-02-08 15:26:10
【问题描述】:

我需要在我所在的视图中显示用户友好的错误消息,并想知道什么是最佳解决方案。我可以使用错误控制器显示和错误页面,但这不是我想要实现的。我需要处理任何模型中的所有自定义错误消息,并在您所在的视图中显示错误。例如:

我在“用户”控制器中。创建新用户时,PHP 模型代码检查是否存在相同的用户名,如果存在我想在视图中显示一条消息,或者在标题中可能有类似的内容:echo $error; 显示我设置为显示的任何错误消息如果发生,来自任何模型。

模型中的示例错误消息:

 if ($p0 > 0) {
        $IsValid = false;
        log::LOG_USER_ERROR("This user already exist!", $username);
        exit("This user already exist! </br> ");
    }

此代码成功地将错误写入日志文件,但是如何在我所在的同一视图中显示错误消息? exit() 在空白页中显示消息。我需要在相同的视图和设计中将其显示为红色块。

【问题讨论】:

  • 不要从模型中调用静态方法,测试会很痛苦。并且绝对不要退出那里,这将使测试变得更加困难。可以返回错误条件,然后在控制器中对其进行处理。听起来您可以在布局中呈现它(包含所有页面模板的通用模板)。
  • 是的,这是正确的方法,只是无法弄清楚如何实现它。我确实尝试在模型中返回 false,然后以某种方式在控制器中返回 false。从控制器很容易在视图中显示消息,但无法弄清楚。有没有例子?谢谢
  • 目前这有点宽泛,如果不知道整个框架的结构很难回答。我认为你最好的选择是看一个流行的类似 MVC 的框架并通过他们的例子来工作。然后,您将能够将它们的结构应用于您自己的框架。也许是 Laravel、Slim 或 Symfony?

标签: php model-view-controller error-handling


【解决方案1】:

exit() 终止当前脚本,因此您的视图的代码不会被执行。

相反,视图的一部分应该是显示消息的区域。然后,您可以将错误消息放入 View 向该区域中的用户显示的变量(可能是消息数组)中。

【讨论】:

  • 嗨 bobbye,我添加了 exit() 只是为了检查语句是否执行。我喜欢用某种函数替换 exit() 以向控制器返回错误条件,然后从控制器在视图中呈现消息
猜你喜欢
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多