1

我一直在用 Yii 困扰自己,目前基本上试图完成一个可以(ajax-)刷新到不同规模(如日、周或月)的数据图表。我真的很想使用Amcharts 扩展,但基本上像EFlot这样更简单的东西也可以。

现在,为了不解决我的独特问题,我似乎无法从扩展中生成任何类型的错误或调试消息(至少从我尝试过的这些中)。例如,当我尝试将一些未知变量或格式错误的数据传递给图表小部件时,它最终会为我绘制一张白纸,什么都没有。此处没有任何内容意味着保留了空间但未绘制图表,任何地方都没有看到错误消息。

CWebLogRoute在我的主配置中启用了它,它可以在页面中正确显示实际的 Yii 错误,但对于扩展它不报告任何内容。

那么,在 Yii 中调试扩展的正确方法是什么?是否有一些我刚刚错过的通用接口,或者每个扩展都有自己的方式来提供错误和调试数据?

4

1 回答 1

1

如果您认为问题出在服务器端,您可以在配置文件中打开跟踪日志记录(默认为 protected/config/main.php):

'log'=>array(
    'class'=>'CLogRouter',
        'routes'=>array(
                array(
                    'class'       => 'CFileLogRoute',
                    'levels'      => 'error, warning, trace'
                ),

         ),
 ),

并在你的扩展中添加一些 Yii::trace() 调用:

class MyExtension {
    public function whatever() {
        Yii::trace("Inside MyExtension::whatever()", "MyExtension");
        // do some stuff
        Yii::trace("Inside MyExtension::whatever(), just did some stuff.", "MyExtension");
    }
}

这会将跟踪调用插入到您的 application.log 文件中(默认情况下,它位于 protected/runtime/application.log 中)。它们看起来像这样:

2013/02/21 15:35:43 [trace] [MyExtension]
/path/to/MyExtension.php (3) 中的 MyExtension::whatever() 2013/02/21 15:35:43 [trace] [MyExtension ] 在 MyExtension::whatever() 中,只是在 /path/to/MyExtension.php (5) 中做了一些事情

将您需要的任何内容放入痕迹中。我首先要确保您认为您从浏览器发送的数据实际上正在以您期望的形式到达它打算到达的功能。如果那里一切正常,那么是时候启动网络检查器(我更喜欢 Chrome)并观看“网络”选项卡。查看对服务器的请求和传递的响应。还要检查 JS 控制台以确保那里没有任何问题。

于 2013-02-21T21:24:13.477 回答