Функция в проекте LuCI
Вот блок кода в проекте LuCI (веб-интерфейс OpenWrt).
Я не понимаю, что делает эта функция, и я не могу найти, где она вызывается. Где эта функция вызывается и что она делает?
p = s:option(ListValue, "proto", translate("Protocol"))
p.override_values = true
p:value("pppoe", "PPPoE")
p:value("pptp", "PPTP")
function p.write(self, section, value)
if value == "pptp" or value == "pppoe" then
self.map:set(section, "peerdns", "1")
self.map:set(section, "defaultroute", "1")
end
return ListValue.write(self, section, value)
end
2 ответа
Решение
Функция p.write(self, section, value)
переопределяет абстрактный родительский метод. LuCI является MVC, поэтому Listvalue вызывает функцию записи, когда страница применяется автоматически.
Я не уверен, где он вызывается, но я предполагаю, что на веб-странице конфигурации сети LuCI.
Он записывает в файл конфигурации сети UCI (логически, для физической записи необходим коммит).