如何在提交前使用 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