cppcms, получение значений из формы

Я хотел бы знать, как получить поля POST из чистого
HTML-файл, без использования класса, который наследуется от cppcms :: form.
Я хочу класс, который реализует
Например, с этим классом:

std::string Index::main(const std::string &url, const std::map<std::string, std::string> parameters)
{
std::string out = (
"<html>\n""<body>\n""<form name='test' action='' method='post'>""<h1>Hello, put your name here:</h1><br />""<input type='text' name='user'>""<input type='submit' value='Submit'>""</form>""</body>\n""</html>\n");

return out;
}

Этот метод вызывается в классе, который наследуется от cppcms :: application:

void Engine::main(const std::string &url)
{
std::map<std::string, std::string> params;

pages["/"] = boost::bind(&Index::main, boost::shared_ptr<Index>(new Index), _1, _2);
std::string out = pages[url](url, params); // Call to Index::main

response().out() << out;
}

То, что я хотел бы сделать, это извлечь поле «user» и поместить его в карту «params», не заставляя мой класс Index наследовать от cppcms :: form или используя метод «get» внутри «post».
Я хочу, чтобы html файлы / классы были полностью независимы от фреймворка cppcms.
Является ли это возможным? Спасибо.

0

Решение

Вы по-прежнему хотите использовать cppcms :: forms, даже если вы не используете автоматическую генерацию форм (HTML).

Зачем? Много веских причин: проверка CSRF, проверка кодировки, проверка различных настроек и т. Д. И т. Д. И т. Д.

Вы можете настроить параметры, такие как username.name («user») в cppcms::form::widgets классы, но все еще используют каркас форм.

cppcms::widgets::text username;
username.name("user");
// validation - what you need
username.non_empty()

// single widget loading
username.load(context());
if(username.validate()) {
myname=username.value();
}

// better as you can handle several widgets at once
cppcms::form frm;
frm.add(username);
...
frm.load(context())
if(frm.validate()) {
...
myname=username.value();
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]