luci接口说明

luci.dispatcher

entry (path, target, title, order)

Create a new dispatching node and define common parameters.

Parameters

  • path: Virtual path
  • target: Target function to call when dispatched.
  • title: Destination node title
  • order: Destination node order value (optional)

Return value:

Dispatching tree node


接口说明:创建一个新的分发节点,并定义相关的参数

参数说明:

path:访问的路径,不过路径是按字符串数组给定的,比如路径按如下方式写“{"sixing", “advanced", "ddns"}”,那么就可以在浏览器里访问“http://192.168.1.1/cgi-bin/luci/sixing/advanced/ddns”来访问这个脚本。而通常我们希望为管理员菜单添加脚本,那么我们需要按如下方式编写“{"admin", "一级菜单名", "菜单项名"}”,系统会自动在对应的菜单中生成菜单项。比如想在“网络”菜单下创建一个菜单项,那么一级菜单名可以写为“network”。注意,这个路径是在mcv架构下的control目录下的路径,在control目录下是定义luci菜单的节点,建立整个luci菜单的框架。

target:当定义的菜单显示或者分发的时候,调用的实际的行为。调用目标分为三种,分别是:

1、执行指定方法(Action)

2、访问指定页面(Views)

3、调用CBI Module

4、调用alias(...)

5、调用arcombine(trg1,trg2)

  • 第一种可以直接调用指定的函数,比如点击菜单项就直接重启路由器等等,比如写为“call("function_name")”,然后在当前lua文件下编写名为function_name的函数就可以调用了,通过这个函数来完成相应的动作。
  • 第二种可以访问指定的页面,比如写为“template("myapp/mymodule")”就可以调用/usr/lib/lua/luci/view/myapp/mymodule.htm文件了。注意,这个指定的是html页面,属于显示view的范畴,所以该html的路径应该是在view
  • 第三种,如果要编写配置页面,就要调用cbi,比如写为“cbi("myapp/mymodule")”就可以调用/usr/lib/lua/luci/model/cbi/myapp/mymodule.lua文件了。另外,cbi渲染可以加入一些另外的参数,比如帮助界面:
    entry({"sixing", "advanced", "ddns"}, cbi("sixing/ddns", {help_url="sixing/help/ddns"}), _("Dynamic DNS"), 11) ,其中
    {help_url="sixing/help/ddns"}就是help界面的连接,"sixing/help/ddns"是在controler目录下的help.lua文件中定义的help入口,也是一个entry定义的入口。这个入口又根据自己定义的相关内容进行处理。
  •  注意,因为是要配置参数,所以必须用到cgi进行底层数据库操作那么这就是model的范畴,所以相应调用的lua脚本就要放在model目录下.
  • 第四种,如果点击了某个菜单,相应的动作是另外一个菜单的入口,那么就使用alias来指明另外路口的路径,如,alias(”sixing “ ,”advanced“,”ddns“),如:entry({"sixing", "advanced"}, alias("sixing", "advanced", "ddns"), _("Advanced"), 50)),表示入口("sixing", "advanced", "ddns")是入口{"sixing", "advanced"}的别名
  • 第五种,如果target有分有参数和没有参数的情况,那么就要将这两种target结合起来,就用combine,比如:
     entry({"sixing", "advanced", "routes", "route"}, arcombine(cbi("sixing/route_zone"),cbi("sixing/routes")), nil, 130).leaf = true, 其中arcombine(cbi("sixing/route_zone"),cbi("sixing/routes")就结合了两个target,根据是否参数输入自动进行调用,


title:定义的节点的名称,比如:entry({"sixing", "advanced"}, alias("sixing", "advanced", "ddns"), _("Advanced"), 50),其中
_("Advanced")就是定义的菜单入口名称,

_()表示菜单名称翻译的入口为 build/i18n-scan.pl,而不是po文件夹路径。该参数不是必须的,可以直接放空。


order:目标节点显示的顺序,可以放空




_ ()

No-op function used to mark translation entries for menu labels. This function does not actually translate the given argument but is used by build/i18n-scan.pl to find translatable entries.接口说明:在定义title的时候,使用这个函数可以指定翻译的入口不为po,而是 build/i18n-scan.pl


alias (...)
Create a redirect to another dispatching node.

Parameters

  • ...: Virtual path destination

接口说明:为当前入口创建另外一个入口别名。这个入口别名也是用字符串数组作为输入参数给出,

entry({"sixing", "advanced"}, alias("sixing", "advanced", "ddns"), _("Advanced"), 50),那么别名也是用,字符串参数给出。

arcombine (trg1, trg2)
Create a combined dispatching target for non argv and argv requests.

Parameters

  • trg1: Overview Target
  • trg2: Detail Target

你可能感兴趣的:(luci接口说明)