小米路由研究之中的一个加入菜单
openWRT之小米路由luci之controller
在controller下有非常多目录他们都独立的建立对应的树:
Web:index.htm --注冊了web树结点下的非常多枝叶
Mobile:index --注冊了mbile下的一些结点
Dispatch: ...
Api: ...
Sevice: ...
依据我们之前原生的openWRT下环境能够得知。假设我们想要要在web界面创建一个选项。我们须要做几个主要的步骤:
1、在controller下显示的web界面注冊结点,以及注冊结点时该处理方式
2、依据处理方式编写对应的文件
A、template方式在view下编写htm文件
B、cbi方式在model下编写对应的文件
C、call方式调用controller下对应的函数(包含一些导入的库的函数)
一般在我controller下写一个lua文件时,假设是call方式处理,调用的本文件里的
函数或者是调用导入库中的函数。
简单实战项目:在小米路由下加入一个菜单选项并做对应的处理
后端处理:注冊结点
在controller下web下的index.lua文件里我们注冊一个结点
--added by heyg: test htm
entry({"web", "testhyg"}, template("web/heyg"), _(“testhyg"), 74)
前端处理:
在view下编写heyg.htm文件,因为关于前端的一些js和htm语言不是非常熟悉我这里直接将manager.htm文件内容复制到heyg.htm文件里
须要注意下面关于htm文件地方:
....
<div id="nav">
<script>
var navCurrent = '.manager';
</script>
<%include ("web/inc/nav")%>
</div>
....
上面的.manager非常重要,在小米路由界面上,在后端注冊结点之外,在前端:布局、布局中块id关联等等,都做了非常多处理,眼下我也没有详细去了解小米前端的编码东西。
如:<%include ("web/inc/nav")%>观察,我们还须要在web/inc/nav.htm中加入一个<li>...</li>以在菜单上显示,加入内容例如以下:
<li class="testhyg">
<a href="<%=luci.dispatcher.build_url("web", "testhyg")%>"><i class="ico ico-nav-4"></i><span>testhyg</span></a>
</li>
相应的要将heyg.htm相应的位置改为以下:
....
<div id="nav">
<script>
var navCurrent = '.testhyg';
</script>
<%include ("web/inc/nav")%>
</div>
....
保存完毕之后。能够再小米菜单上显示自己的菜单了....之余菜单中的一些js和html以及嵌入lua语言和c语言的处理,我这里也不是非常清楚,就没有多余去赘述。