Crow/docs/guides/templating.md
The-EDev 23648445f3 Changed documentation. a lot.
Added mkdocs documentation.
Altered doxygen generation (doxyfile and shell script) to work with mkdocs.
Removed the whole html folder thing for docs, now the files reside in the root gh-pages branch.
New readme.
2020-11-28 17:28:47 +03:00

1.4 KiB

Templating is when you return an html page with custom data. You can probably tell why that's useful.

Crow supports mustache for templates through its own implementation crow::mustache.

##Components of mustache

There are 2 components of a mustaceh template:

  • Page
  • Context

###Page The HTML page (including the mustache tags). usually loaded into crow::mustache::template_t Needs to be placed in "templates" directory (relative to where the crow executable is).

For more inforation on how to formulate a template, see this mustache manual.

###Context A JSON object containing the tags as keys and their values. crow::mustache::context is actually a crow::json::wvalue.

##Returning a template To return a mustache template, you need to load a page using #!cpp auto page = crow::mustache::load("path/to/template.html");, keep in mind that the path is relative to the templates directory.
You also need to set up the context by useing #!cpp crow::mustache::context ctx;. Then you need to assign the keys and values, this can be done the same way you assign values to a json write value (ctx["key"] = value;).
With your context and page ready, just #!cpp return page.render(ctx);. This will use the context data to return a filled template.