onethink不能開啓頁面trace

原文:http://www.daydaytc.com/php/305.html


本來以爲onethink是在tp的基礎上開發的,那麼tp的文檔應該適用於onethink,但是卻恰恰相反。今天想使用以下tp的頁面trace功能調試以下onethink,結果按照tp文檔上所說,先開啓debug調試,然後在項目配置文件中開啓 ‘SHOW_PAGE_TRACE’ =>true,最後就可以了。結果弄來弄去沒有看到頁面trace的身影。

經過一步步調試也終於明白了。其實onethink在tp的基礎上有點小改動。我們先來了解一下頁面trace是怎麼實現的。tp通過行爲擴展實現了頁面trace。在行爲模式common.php中定義了

'app_end'    => array(
            'Behavior\ShowPageTraceBehavior', // 頁面Trace顯示
),


系統在初始化的時候會把此行爲擴展加載到hook中,在app的run方法中調用了app_end標籤,執行了ShowPageTraceBehavior類的run方法。


來看run方法幹了什麼..

判斷一下如果不是ajax請求並且 SHOW_PAGE_TRACE爲true,那麼就調用其trace方法組合出調試信息並echo。

// 行爲擴展的執行入口必須是run
public function run(&$params)
{
        if (!IS_AJAX && !IS_CLI && C('SHOW_PAGE_TRACE')) {
            echo $this->showTrace();
        }
 }

本來非常順暢的一段,但是問題就是出在這個C(‘SHOW_PAGE_TRACE’).   經過調試後發現此時這個值竟是個0,也即是沒有開啓。但是我確實在配置文件中開啓了爲true。

這裏就是onethink的改變。onethink在其後臺有個配置系統,可以可視化的對配置進行修改。ot在其後臺的公用控制器AdminController和前臺的HomeController的初始化方法中都加入以下邏輯。

/* 讀取數據庫中的配置 */
$config    =    S('DB_CONFIG_DATA');
if(!$config){
    $config    =    D('Config')->lists();
    S('DB_CONFIG_DATA',$config);
}
C($config); //添加配置
$this->display();

意思就是讀取數據庫中的配置,合併到C函數的配置中。這樣我們在以後使用c函數的時候看到的就是合併後的了。

這就是爲什麼我們明明設置了SHOW_PAGE_TRACE爲true,但還是爲false。因爲數據庫中是false,最後合併吧前面的值給覆蓋了。所以我們要想使用頁面trace的功能,需要在ot的後臺進行設置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章