diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-01-17 02:11:31 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-01-17 02:11:31 +0900 |
| commit | deacd0dfc195bca41af631114804d29937337cd8 (patch) | |
| tree | f1f83580e5bc892c0794ac41632bc0cce3498f65 /services/app/templates/form | |
| parent | 38ddeb28ec846ee966d0fe6873585d697a9ef373 (diff) | |
| download | phperkaigi-2024-albatross-deacd0dfc195bca41af631114804d29937337cd8.tar.gz phperkaigi-2024-albatross-deacd0dfc195bca41af631114804d29937337cd8.tar.zst phperkaigi-2024-albatross-deacd0dfc195bca41af631114804d29937337cd8.zip | |
.
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> |
