diff options
Diffstat (limited to 'services/app/templates/form')
4 files changed, 85 insertions, 0 deletions
diff --git a/services/app/templates/form/_form.html.twig b/services/app/templates/form/_form.html.twig new file mode 100644 index 0000000..b6a9d1d --- /dev/null +++ b/services/app/templates/form/_form.html.twig @@ -0,0 +1,24 @@ +<form method=POST{% if form.action %} action="{{ form.action }}"{% endif %} novalidate> + {% if form.errors.general %} + <div class="alert alert-danger"> + {{ form.errors.general }} + </div> + {% endif %} + + {% for item in form.items %} + {% if item.type == 'checkbox' %} + {{ include('form/_form_item_checkbox.html.twig') }} + {% elseif item.type == 'textarea' %} + {{ include('form/_form_item_textarea.html.twig') }} + {% else %} + {{ include('form/_form_item.html.twig') }} + {% endif %} + {% endfor %} + + <div class="mb-3"> + <input type="submit" class="btn btn-primary" value="{{ form.submit_label }}"> + </div> + + <input type="hidden" name="{{ csrf.name_key }}" value="{{ csrf.name }}"> + <input type="hidden" name="{{ csrf.value_key }}" value="{{ csrf.value }}"> +</form> diff --git a/services/app/templates/form/_form_item.html.twig b/services/app/templates/form/_form_item.html.twig new file mode 100644 index 0000000..6e6a36b --- /dev/null +++ b/services/app/templates/form/_form_item.html.twig @@ -0,0 +1,20 @@ +{% set value = form.state[item.name] %} +{% set error = form.errors[item.name] %} +{% set classes = 'form-control' %} +{% if error %} + {% set classes = classes ~ ' is-invalid' %} +{% endif %} +{% set required = item.isRequired ? ' required' : '' %} +{% set disabled = item.isDisabled ? ' disabled' : '' %} +{% set extra = item.extra ? item.extra : '' %} +<div class="mb-3"> + {% if item.label %} + <label for="form-{{ item.name }}" class="form-label">{{ item.label }}</label> + {% endif %} + + <input type="{{ item.type }}" class="{{ classes }}" id="form-{{ item.name }}" name="{{ item.name }}"{% if value %} value="{{ value }}"{% endif %}{{ required }}{{ disabled }} {{ extra }}> + + {% if error %} + <div class="invalid-feedback">{{ error }}</div> + {% endif %} +</div> diff --git a/services/app/templates/form/_form_item_checkbox.html.twig b/services/app/templates/form/_form_item_checkbox.html.twig new file mode 100644 index 0000000..e51cc0c --- /dev/null +++ b/services/app/templates/form/_form_item_checkbox.html.twig @@ -0,0 +1,21 @@ +{% set value = form.state[item.name] %} +{% set error = form.errors[item.name] %} +{% set classes = 'form-check-input' %} +{% if error %} + {% set classes = classes ~ ' is-invalid' %} +{% endif %} +{% set required = item.isRequired ? ' required' : '' %} +{% set disabled = item.isDisabled ? ' disabled' : '' %} +{% set extra = item.extra ? item.extra : '' %} +{% set extra = extra ~ (value == 'on' ? ' checked' : '') %} +<div class="mb-3 form-check"> + <input type="checkbox" class="{{ classes }}" id="form-{{ item.name }}" name="{{ item.name }}"{% if value %} value="{{ value }}"{% endif %}{{ required }}{{ disabled }} {{ extra }}> + + {% if item.label %} + <label for="form-{{ item.name }}" class="form-check-label">{{ item.label }}</label> + {% endif %} + + {% if error %} + <div class="invalid-feedback">{{ error }}</div> + {% endif %} +</div> diff --git a/services/app/templates/form/_form_item_textarea.html.twig b/services/app/templates/form/_form_item_textarea.html.twig new file mode 100644 index 0000000..bf5cc8c --- /dev/null +++ b/services/app/templates/form/_form_item_textarea.html.twig @@ -0,0 +1,20 @@ +{% set value = form.state[item.name] %} +{% set error = form.errors[item.name] %} +{% set classes = 'form-control' %} +{% if error %} + {% set classes = classes ~ ' is-invalid' %} +{% endif %} +{% set required = item.isRequired ? ' required' : '' %} +{% set disabled = item.isDisabled ? ' disabled' : '' %} +{% set extra = item.extra ? item.extra : '' %} +<div class="mb-3"> + {% if item.label %} + <label for="form-{{ item.name }}" class="form-label">{{ item.label }}</label> + {% endif %} + + <textarea class="{{ classes }}" id="form-{{ item.name }}" name="{{ item.name }}"{{ required }}{{ disabled }} {{ extra }}>{{ value }}</textarea> + + {% if error %} + <div class="invalid-feedback">{{ error }}</div> + {% endif %} +</div> |
