Firefly开源社区

标题: Luci开发入门-1 [打印本页]

作者: 代祥军    时间: 2015-3-25 11:03
标题: Luci开发入门-1
本帖最后由 代祥军 于 2015-3-25 11:16 编辑

1.开发环境构建
1.1同步代码
git clone https://git.oschina.net/OpenWrt-X/gk-luci.git
git branch 看到的事mater分支
但是我们不是master分支开发
git pull origin trunk:trunk
从git服务器同步trunk分支,并且在本地命名为trunk
git branch可以看到如下结果
* master
  trunk
星号表示处于的分支.
切换到 trunk分支
git checkout trunk
git branch查看所在分支
  master
* trunk
1.2ubuntu下编译luci
如果你的lua版本是5.2,
你可以下载lua源码直接编译源码可以将版本降低到5.1
  1. svn co http://svn.luci.subsignal.org/luci/branches/luci-0.11
  2. sudo apt-get install lua5.1
  3. sudo apt-get install liblua5.1-0-dev
  4. sudo apt-get install libssl-dev
  5. sudo apt-get install bridge-utils
  6. make runhttpd &
  7. 输入 :http://127.0.0.1:8080/luci
复制代码

2.进入applications
新建一个目录luci-demo
  1. cd luci-demo/
复制代码
然后新建目录和文件结构如下:
然后新建目录和文件结构如下:
├── luasrc
   ├── controller
      └── demo.lua
   └── model
       └── cbi
           └── demo.lua
└── Makefile


2.1.vim Makefile
容如下:
  1. PO = XXX
  2. include ../../build/config.mk
  3. include ../../build/module.mk
复制代码
其中PO=XXX表示翻译模块。

2.2.controller目录中demo.lua内容-------------------------------------------------------------------------------------------------------------
  1. module("luci.controller.demo", package.seeall)
  2. function index()      
  3.              local page      
  4.        page = entry({"admin", "services", "demo"}, cbi("demo"), _("test demo"))      
  5.        page.dependent=true
  6. end
复制代码


---------------------------------------------------------------------------------------------------------------
demo位于admin/services下,调用的cbi方法是demo,页面的名字是test_demo.
[size=14.0000pt]3.进入modul/cbi目录编写控件
3.1要到了map函数,必须在luci-demo下建立如下目录文件
mkidr -p root/etc/config/  在此目录下建立vim demo配置文件。
然后在demo.lua下写入下面内容
  1. m = Map("demo", translate("test demo"))
  2. return  m
复制代码
效果如下:
下面来创建一个section

  1. m = Map("demo", translate("test demo"))
  2. s = m:section(TypedSection,"demo","Demo")
  3. s.anonymous = true --表示是否展示section的名字
  4. return m
复制代码
效果:


section中创建两个tab
  1. m = Map("demo", translate("test demo"))
  2. s = m:section(TypedSection,"demo","Demo")
  3. s.anonymous = true --表示是否展示section的名字
  4. s:tab("general",translate("general Settings"))
  5. s:tab("template",translate("Edit Template"))
  6. return m
复制代码

效果如下:
今后多番查找,发现在配置文件中如果没有选项在这个tab下显示,这个tab会被自动忽略。
所以修改配置文件demo
  1. config demo 'demo'
  2.        option name 'xwifi'
复制代码

generaltab下添加如下代码
  1. m = Map("demo", translate("test demo"))
  2. s = m:section(TypedSection,"demo","Demo")
  3. s.anonymous = true --表示是否展示section的名字
  4. s:tab("general",translate("general Settings"))
  5. s:tab("template",translate("Edit Template"))
  6. s:taboption("general",Value,"name",translate("Hostname")); --添加的代码
  7. return
复制代码
查看效果:


QQ:574889524


作者: 长江之水    时间: 2015-5-13 15:15
大师啊 2呢???
作者: 代祥军    时间: 2015-5-19 17:58
长江之水 发表于 2015-5-13 15:15
大师啊 2呢???

发太久了,容我想想
作者: flywat    时间: 2016-2-15 17:36
大师




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1