{% extends "structure/base.html" %} {% from 'crud/_macros.html' import render_field, render_layout %} {% block title %}{{ construct.compose_title(construct.t("crud-view-rec", {'recname': construct.t(view.name, {'count': 1})})) }}{% endblock %} {# This view renders its own visible

, so suppress the layout default. #} {% block page_heading %}{% endblock %} {% block content %} {# Deliberately no
, no tabs and no save control: the fields arrive already forced readonly, and a form wrapper around them would only invite a POST this page has no route for. #}
{{ icon("back", label=construct.t("crud-back-button")) }}

{{ construct.t('crud-view-rec', {'recname': construct.t(view.name, {'count': 1}) }) }}

{% if edit_actions %}
{% for action in edit_actions %} {{ icon(action.icon, label=construct.t(action.name)) }} {% endfor %}
{% endif %}
{% block view_body %}
{% call(field, type) render_layout(construct, form_layout | default(none), fields) %} {{ render_field(construct, field, type, view, data, ds) }} {% endcall %}
{% endblock %}
{% endblock %}