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());