用luci框架创建luci界面的时候,页面默认具备“保存&应用”,“保存”,“重置”,“帮助”等控件,当然,“帮助”控件会判断开发者有没有设置相对应的帮助页面来决定要不要显示该控件。由于是利用框架创建的控件,所以要获取控件状态就需要对框架有所了解。
应用1:在配置界面中判断是否 “save & apply” “save”控件是否按下,获取这个控件按下的消息,然后做相应的处理。其实,这几个控件的响应机制是做在/luci/view/cbi/footer.tm中:
<%- if pageaction then -%>
<div class="cbi-page-actions">
<% if redirect then %>
<div style="float:left">
<input class="cbi-button cbi-button-link" type="button" value="<%:Back to Overview%>" onclick="location.href='<%=pcdata(redirect)%>'" />
</div>
<% end %>
<% if flow.skip then %>
<input class="cbi-button cbi-button-skip" type="submit" name="cbi.skip" value="<%:Skip%>" />
<% end %>
<% if not autoapply then %>
<input class="cbi-button cbi-button-apply" type="submit" name="cbi.apply" value="<%:Save & Apply%>" onclick="window.parent.scrollTo(0,0)" />
<% end %>
<input class="cbi-button cbi-button-save" type="submit" name="cbi.save" value="<%:Save%>" onclick="window.parent.scrollTo(0,0)" />
<input class="cbi-button cbi-button-reset" type="reset" value="<%:Reset%>" onclick="window.parent.scrollTo(0,0)" />
<% if help_url then %>
<input class="cbi-button cbi-button-help" type="button" value="<%:Help%>" onclick="location.href='<%=luci.dispatcher.build_url(help_url)%>'" />
<% end %>
<script type="text/javascript">cbi_d_update();</script>
</div>
<%- end -%>
</form>
<%+footer%>
从代码看出,这个是htm文件中定义了,页面的控件名字,消息名字,动作相应等等,比如对“Save & Apply”的定义:
<input class="cbi-button cbi-button-apply" type="submit" name="cbi.apply" value="<%:Save & Apply%>" onclick="window.parent.scrollTo(0,0)" />
cbi.apply是广播出去的消息名字,那么,开发者可以在mode下面用CBI创建配置界面的时候用:
local apply = luci.http.formvalue("cbi.apply")
if apply then
luci.sys.exec("uci commit network")
end
来截取消息,然后做相应的处理,
对“Save"控件也是一样的,处理方式,但是apply机制有在 luci/view/cbi/apply_xhr.htm中做另外的一种XHR机制,就是在点击“save & apply”之后在页眉显示处理的进程:比如正在配置哪个文件,等等。
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。