Codeigniter:为反馈创建助手和全局消息数组;错误
因此,在某些情况下,可能会有一个或多个错误报告给用户(并通知我),这些错误可能是由控制器级别(输入、验证)或模型级别引起的 我正在考虑为“反馈”创建一个基本的助手,它基本上具有全局消息数组(注意,错误,成功) 然后,无论是在模型还是控制器级别,如果出现错误(或正确!),我都可以调用反馈函数Codeigniter:为反馈创建助手和全局消息数组;错误,codeigniter,error-handling,codeigniter-2,Codeigniter,Error Handling,Codeigniter 2,因此,在某些情况下,可能会有一个或多个错误报告给用户(并通知我),这些错误可能是由控制器级别(输入、验证)或模型级别引起的 我正在考虑为“反馈”创建一个基本的助手,它基本上具有全局消息数组(注意,错误,成功) 然后,无论是在模型还是控制器级别,如果出现错误(或正确!),我都可以调用反馈函数 feedback('error','Connection is temporarily down blah') 我不需要将它传递给我的视图,因为它将被全局设置,所以我可以调用$this->feedback-
feedback('error','Connection is temporarily down blah')
我不需要将它传递给我的视图,因为它将被全局设置,所以我可以调用$this->feedback->display_all()之类的东西
这是一种ok/MVC友好的方式吗?如果您使用show_error(“您的错误消息”),这似乎是我实现的一种直截了当的方法;在您的控制器中,您将实现相同的功能。如果要自定义错误的外观,需要使用applications/errors中的error_general.php文件
如果您还想记录错误,可以使用日志消息(“级别”、“消息”);在您的控制器中运行。对于我的项目,我创建了一个微小的
mdl\u错误
模型
此型号有一个公共功能,throwError
,以及一些私人助手,可以向用户显示即时通知,并在需要时向我发送包含当前值和会话数据的电子邮件。模型是自动加载的,仅在需要时调用
下面是它的基本外观:
<?php
class mdl_error extends CI_Model
{
//types: error, alert, good
function throwError($type, $message, $info="", $flash=true, $email=true)
{
if($flash){
$alert = $type."|".$message;
$this->session->set_userdata(array("flash" => $alert));
}
if($email){
$problems = $this->recursivePrintingOfVariables($info);
$sessionData = $this->recursivePrintingOfVariables($this->session->userdata);
$emailMessage = "Name<br/> <br/>Something has happened. <br/> <br/>";
$emailMessage .= "The type was: {$type}<br/>The message was: {$message}<br/> <br/> <br/>";
$emailMessage .= "Here is the local variables at the time:<br/> <br/>{$problems}<br/> <br/> <br/>";
$emailMessage .= "Here is the session data:<br/> <br/>{$sessionData}<br/> <br/> <br/>";
$emailMessage .= "Please solve this problem or we are all dooooooomed.<br/><br/>Love,<br/>Website";
$this->load->library('email');
$this->email->from("my email");
$this->email->to("error@whatever.com");
$this->email->subject($type.' Message from Website');
$this->email->message($emailMessage);
$this->email->send();
}
}
function recursivePrintingOfVariables($info)
{
$keys = array_keys($info);
$string = "";
foreach($keys as $key){
$string .= $key." => ";
if(is_array($info[$key])){
$string .= "Inner Array<br/>";
$string .= "<div style='margin-left:15px;'>";
$string .= $this->recursivePrintingOfVariables($info[$key]);
$string .= "</div>";
}else{
$string .= $info[$key];
}
$string .= "<br/><br/>";
}
return $string;
}
但是,如何编译错误或常规消息以在视图中显示给用户呢?我看到log_消息允许不同类型的消息,这很合适,但它实际上是用于日志(?)的;这是给你的。您可以使用show_error(“您的错误消息”)创建一个助手;该回音是您的特定错误,因此您的控制器中的代码会更少。您找到答案了吗?我正在努力实现类似的目标。谢谢
$this->mdl_error->throwError("error","something happend", get_defined_vars());