Skip to content
Snippets Groups Projects
Forked from ffbs / ffbs-gluon
2354 commits behind the upstream repository.
view.rst 2.49 KiB

Views

The template parser reads views from the view subdirectory of a gluon-web application (/lib/gluon/config-mode/view for the config mode, lib/gluon/status-page/view for the status page). Writing own views should usually be avoided in favour of using :doc:`model` with their predefined views.

Views are partial HTML pages, with additional template tags that allow to embed Lua code and translation strings. The following tags are defined:

  • <% ... %> evaluates the enclosed Lua expression.
  • <%= ... %> evaluates the enclosed Lua expression and prints its value.
  • <%+ ... %> includes another template.
  • <%: ... %> translates the enclosed string using the loaded i18n catalog.
  • <%_ ... %> translates the enclosed string without escaping HTML entities in the translation. This only makes sense when the i18n catalog contains HTML code.
  • <%# ... %> is a comment.

All of these also come in the whitespace-stripping variants <%- and -%> that remove all whitespace before or after the tag.

Complex combinations of HTML and Lua code are possible, for example:

<div>
  <% if foo then %>
    Content
  <% end %>
</div>

Variables and functions

Many call sites define additional variables (for example, model templates can access the model as self and a unique element ID as id), but the following variables and functions should always be available for the embedded Lua code:

  • renderer: :ref:`web-controller-template-renderer`

  • http: :ref:`web-controller-http`

  • request: Table containing the path components of the current page

  • url (path): returns the URL for the given path, which is passed as a table of path components.

  • attr (key, value): Returns a string of the form key="value" (with a leading space character before the key).

    value is converted to a string (tables are serialized as JSON) and HTML entities are escaped. Returns an empty string when value is nil or false.

  • include (template): Includes another template.

  • node (path, ...): Returns the controller node for the given page (passed as one argument per path component).

    Use node(unpack(request)) to get the node for the current page.

  • pcdata (str): Escapes HTML entities in the passed string.

  • urlencode (str): Escapes the passed string for use in an URL.

  • translate, _translate, translatef and i18n: see :doc:`i18n`