我想知道如何从纯文本中检索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或使用“post”内部的“get”方法。 我希望html文件/类完全独立于cppcms框架。 可能吗?谢谢。
答案 0 :(得分:0)
即使您不使用自动表单(HTML)生成,您仍然希望使用cppcms :: forms。
为什么呢?很多很好的理由:CSRF验证,编码验证,各种设置验证等等。
您可以在cppcms::form::widgets
类中设置所需的参数,例如username.name(“user”),但仍然使用表单框架。
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();
}