Търся начин за запазване и след обработка на аргументите на уеб формуляр в SWI-Prolog, когато изпратя формуляра и извикам същата програма, за да генерира друг формуляр и т.н. Винаги извикване на една и съща прологова програма от една форма към следващата.
Библиотеката CGI SWI-Prolog записва тези аргументи като списък с термини Име(Стойност), т.е. [Name(Value)]
.
ако предам аргументите като скрит аргумент във формуляра (TotalArguments е списък):
format('"‹"input type="hidden" id="nameofform1" name="nameofform1" value="~w" />~n', TotalArguments),
Трябва да се отърва от идентификатора или името, което се свързва в моя резултатен списък в TotalArguments, когато го добавя. Някаква идея как да направите това, така че крайният списък да изглежда като [nameofform1(value1), nameofform2(value2),...]
?
Бих могъл също да напиша този списък с аргументи и да го добавя във файл и да го проверявам всеки път, когато програмата бъде извикана отново, но това ще ги зарежда винаги и трябва да заредя само аргументите, необходими в конкретната стъпка и формуляр, обработени в момент. Защото в противен случай този файл може да съдържа нежелана информация след някои екзекуции. Някакви мисли как да го направя по този начин?
Някакви други предложения за този вид проблем?
Редактиране с моето решение чрез скрит формуляр
Реших го, като създадох:
extract_value([],_). extract_value([A0|__ ], Valor) :- A0 =.. [_, Value], Valor is Value.
и след това прави:
extract_value(Аргументи, Стойност),
и подаване на скритата стойност на формуляра като:
format('‹"input type="hidden" id="nameofform1" name="nameofform1" value="~w"/>~n', [Стойност]),
и го добавям в следващия формуляр, така че да изглежда както исках:
[именаформуляр2(стойност2),именаформуляр1(стойност1)]