如何在提交前使用 lua 代码更新 luci web 界面中的 cbi 变量?
how to update cbi variable in luci web interface using lua code before commit?
我正在尝试修改动态列表中的每个元素,如果这些修改正常并且验证通过,我想提交更新后的变量而不是原始变量。
示例:我传递“A B C”和“1 2 3 ABC”,我希望函数将它们保存为“ABC”和“123ABC”
我在验证和删除空格(进行修改)方面没有问题,问题是我不知道如何用新字符串替换旧字符串。
我不会 post 代码,但这是我正在做的事情的总体思路
list = s:option(DynamicList, "text", "text")
list.parse = function(self, section, novld, ...)
local listString = luci.http.formvalue(path to the list)
for key, value in pairs(listString) do
-- change the value here and delete spaces--
-- validate the new value --
end
Value.parse(self, section, novld, ...)
end
这是一般的想法,我尝试使用 Value.write(self, section, list) ,其中列表是相同的旧列表,但每次我修改一个值时,我都会在列表中更新它this, list[key] = value (修改后)
问题是,如果函数达到 Value.parse.
,则写入函数无效
如果有人需要,这就是解决方案。
list.write = function(self, section, value)
local list
if type(value) == "table" then
list = value
elseif value ~= nil then
list = { value }
else
return -- should not happen, .remove() should have been called then
end
for _, item in ipairs(list) do
list[_] = strip_spaces(item)
end
return Value.write(self, section, list)
end
有关详细信息,请参阅此 post:link
我正在尝试修改动态列表中的每个元素,如果这些修改正常并且验证通过,我想提交更新后的变量而不是原始变量。 示例:我传递“A B C”和“1 2 3 ABC”,我希望函数将它们保存为“ABC”和“123ABC” 我在验证和删除空格(进行修改)方面没有问题,问题是我不知道如何用新字符串替换旧字符串。
我不会 post 代码,但这是我正在做的事情的总体思路
list = s:option(DynamicList, "text", "text")
list.parse = function(self, section, novld, ...)
local listString = luci.http.formvalue(path to the list)
for key, value in pairs(listString) do
-- change the value here and delete spaces--
-- validate the new value --
end
Value.parse(self, section, novld, ...)
end
这是一般的想法,我尝试使用 Value.write(self, section, list) ,其中列表是相同的旧列表,但每次我修改一个值时,我都会在列表中更新它this, list[key] = value (修改后) 问题是,如果函数达到 Value.parse.
,则写入函数无效如果有人需要,这就是解决方案。
list.write = function(self, section, value)
local list
if type(value) == "table" then
list = value
elseif value ~= nil then
list = { value }
else
return -- should not happen, .remove() should have been called then
end
for _, item in ipairs(list) do
list[_] = strip_spaces(item)
end
return Value.write(self, section, list)
end
有关详细信息,请参阅此 post:link