1

我正在尝试修改动态列表中的每个元素,如果这些修改正常并且验证通过,我想提交更新的变量而不是原始的。示例:我通过“AB C”和“1 2 3 ABC”并且我希望函数将它们保存为“ABC”和“123ABC”我在验证和删除空格(进行修改)方面没有问题问题是我不知道如何用新字符串替换旧字符串。

我不能发布代码,但这是我在做什么的一般想法

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) ,其中列表是相同的旧列表,但每次我修改一个值时,我都会像这样在列表中更新它,list[key] =值(修改后)问题是,如果函数达到 Value.parse,则写入函数无效。

4

1 回答 1

0

如果有人可能需要,这就是解决方案。

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

有关更多详细信息,请参阅此帖子:链接

于 2020-07-13T08:51:02.417 回答