Firefly开源社区

打印 上一主题 下一主题

Luci开发入门-1

98

积分

9

威望

6

贡献

注册会员

Rank: 8Rank: 8

积分
98

Luci开发入门-1

发表于 2015-3-25 11:03:34      浏览:7584 | 回复:3        打印      只看该作者   [复制链接] 楼主
本帖最后由 代祥军 于 2015-3-25 11:16 编辑

1.开发环境构建
1.1同步代码
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

回复

使用道具 举报

42

积分

0

威望

0

贡献

游客

积分
42
发表于 2015-5-13 15:15:45        只看该作者  沙发
大师啊 2呢???
回复

使用道具 举报

98

积分

9

威望

6

贡献

注册会员

Rank: 8Rank: 8

积分
98
发表于 2015-5-19 17:58:26        只看该作者  板凳

发太久了,容我想想
回复

使用道具 举报

10

积分

0

威望

0

贡献

游客

积分
10
发表于 2016-2-15 17:36:23        只看该作者  地板
大师
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表