onethink後臺的入口頁面一樣是Index/index控制器html
首先,Index繼承了AdminController,AdminController有一個_initialize函數,這是全部後臺運行的基本函數,Public控制器控制了登陸頁面,Public繼承於Controller。框架
運行後臺是會首先進入到Index,接着在init中跳轉到登陸,登陸成功跳轉到Index,此時會接着運行init,進行一些其餘檢測,完成菜單模板變量的分配,完成登陸控制。函數
在Admin的init初始化函數中,完成了UID和IS_ROOT宏的檢測,UID跳轉到登陸頁面,IS_ROOT輸出403禁止訪問,和未受權訪問。url
接着分配__MENU__菜單變量,這個變量在模板繼承中的base.html文件中使用,使用了getMenus()函數來實現。spa
base.html主要定義了邊欄和內容區,以及菜單和用戶的修改密碼,修改暱稱。htm
base.html中的__MENU__.main,關聯的是menu這張表,這張表的url字段存儲的是跳轉連接,pid爲0的是最頂部菜單欄目,title是顯示的文本內容。繼承
Admin控制器的getMenus()函數代碼很長,初步效果是讀取了menu表的數據,__MENU__.main存儲了pid爲0的菜單get
原本覺得是動態讀取menu表的數據,根據表數據自動生成菜單,由於menu表中存儲的有新增啦,編輯啦。接着看內容菜單Article/index,看Article/Index模板中的內容html代碼,發現這些文章添加,文章刪除等這些不是從Article/Index控制器中分配的變量,而是靜態的HTML代碼來描述這些菜單項。it
這也就解釋了爲何__MENU__.main變量中的數據只有頂部菜單。模板
CMS最爲核心的是什麼?是內容管理,框架最核心的是什麼?簡化工做。