潘多拉Pandora (openwrt), MVC 自定義功能

Luci 頁面編輯
Luci 的界面用戶目錄在/usr/lib/lua/luci,
luci 是 mvc 架構,
/usr/lib/lua/luci/下有三個目錄
model、view、controller,它們對應 M、V、C。
下面簡單介紹生成界面的方法。
其中 M 是已經生成的 web 控件,
其實這裏就是寫好的 lua 腳本,V 是給外部提供的一些 web 界面,C 控制其 V 和 M 的顯示方式,從上面的描述可以看出 C 部分是其入口的地方, 現在就進入 controller 看看他的內容, 其實它的入口地址在 controller的 admin 目錄下面,裏面的各個 lua 文件就是各個入口,比如 system.lua 就對應的主界面的 system 欄下面,咱們現在希望在 system 欄中增加一個自定義的界面,
這裏爲了方面描述只顯示 helloworld。
每個功能界面的入口地址爲對應的 lua 文件中 entry 功能函數,entry 功能函數的原型爲
entry(path, target, title=nil, order=nil)   前面兩個參數是必須的,後面兩個是可選的。
Path 形如(admin,system,reboot),
entry 根據這些屬性創建節點,比如上面內容代表在 system 標籤中的 reboot 頁面,target 是這裏的重點,它描述了當用戶調用這個界面所執行的行爲。
這裏主要由三種行爲,call、template、cbi,
其中 call 爲調用文件中的功能函數,
template 爲調用 view 中的 html 界面,
cbi 爲調用 mode 中的 lua 文件。
Title 是在頁面中顯示的內容,
order 是顯示的順序,順序越小顯示內容越靠前。
下面在 system.lua 中增加一條
entry({"admin", "system", "helloworld"}, template("admin_system/helloworld"), _("helloworld "), 99)

第一個參數代表一個節點,
第二個參數,調用 view/admin_system/helloworld.htm 文件,
第三個參數爲顯示的名字,
第四個參數爲顯示順序,這裏在最後顯示,
其中 helloworld.htm 文件的內容如下:

<%+header%>
<h1><%:Hello World%></h1>
<%+footer%>

執行完之後可以看下界面的顯示,

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