onethink不能開啓頁面trace

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


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

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

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


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


來看run方法幹了什麼..

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

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

原本很是順暢的一段,可是問題就是出在這個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();this

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

這就是爲何咱們明明設置了SHOW_PAGE_TRACE爲true,但仍是爲false。由於數據庫中是false,最後合併吧前面的值給覆蓋了。因此咱們要想使用頁面trace的功能,須要在ot的後臺進行設置。debug

相關文章
相關標籤/搜索