Skip to content

Instantly share code, notes, and snippets.

@ThiefMaster
Created March 11, 2014 11:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ThiefMaster/9483901 to your computer and use it in GitHub Desktop.
Save ThiefMaster/9483901 to your computer and use it in GitHub Desktop.
{%- macro form_field_label(field, label_for=true) -%}
<label{% if label_for %} for="{{ field.id }}"{% endif %}>{{ field.label.text }}
{%- if field.flags.required -%}
<span class="ym-required" title="Dieses Feld muss ausgefüllt werden.">*</span>
{%- endif %}</label>
{% endmacro %}
{%- macro form_field_errors(field) -%}
{% if field.errors %}
<strong class="ym-message">
{{ field.errors|join('<br>'|safe) }}
</strong>
{% endif %}
{%- endmacro -%}
{%- macro form_field(field, label_for=true) -%}
{% set cls = field.widget.__class__.__name__ %}
{% if field == None %}
{# nothing #}
{% elif field.type in ('HiddenField', 'CSRFTokenField') or cls == 'HiddenInput' %}
{% if caller %}
<div class="{% if field.errors %}error {% endif %} ym-fbox-text">
{{ form_field_errors(field) }}
{{ form_field_label(field, label_for) }}
{{ caller() }}
</div>
{% else %}
{{ field() }}
{% endif %}
{% else %}
<div class="{% if field.errors %}ym-error {% endif %}ym-fbox-{% if cls == 'SubmitInput' %}button{% elif cls in ('RadioInput', 'ListWidget', 'CheckboxInput') %}check{% elif cls == 'Select' %}select{% else %}text{% endif %}">
{% if field.type == 'BooleanField' %}
{{ form_field_errors(field) }}
{{ field(**kwargs) }}
{{ form_field_label(field, label_for) }}
{% elif field.type == 'RadioField' %}
<fieldset>
{{ form_field_errors(field) }}
<legend>{{ field.label.text }}</legend>
{% for subfield in field %}
<div>
{{ subfield(**kwargs) }}
{{ form_field_label(subfield, label_for) }}
</div>
{% endfor %}
</fieldset>
{% elif field.type == 'SelectMultipleField' and field.size %}
{{ form_field_errors(field) }}
{{ form_field_label(field, label_for) }}
{{ field(size=field.size, **kwargs) }}
{% else %}
{{ form_field_errors(field) }}
{{ form_field_label(field, label_for) }}
{{ field(**kwargs) }}
{% if caller %}
<div style="margin-left:30%; clear:left;">{{ caller() }}</div>
{% endif %}
{% endif %}
</div>
{% endif %}
{%- endmacro -%}
{%- macro form_fields(form, legend='', fieldset=True, fields=None, skip=(), hidden=False) -%}
{% for field in form if hidden and (field.type in ('HiddenField', 'CSRFTokenField') or field.widget.__class__.__name__ == 'HiddenInput') %}
{% if field.errors %}
<div class="error global-error">
{{ form_field_errors(field) }}
</div>
{% endif %}
{{ field() }}
{% endfor %}
{% if fieldset %}<fieldset>{% endif %}
{% if legend %}<legend>{{ legend }}</legend>{% endif %}
{% if fields %}
{% for field_name in fields if field_name not in skip and field_name in form %}
{% set field = form[field_name] %}
{% if field.type not in ('HiddenField', 'CSRFTokenField') %}
{{ form_field(field) }}
{% endif %}
{% endfor %}
{% else %}
{% for field in form if field.type not in ('HiddenField', 'CSRFTokenField') and field.short_name not in skip %}
{{ form_field(field) }}
{% endfor %}
{% endif %}
{% if fieldset %}</fieldset>{% endif %}
{%- endmacro -%}
{%- macro form_header(form, errors_for=(), skip=()) -%}
{% for field in form if (field.type in ('HiddenField', 'CSRFTokenField') or field.short_name in errors_for) and (field.short_name not in skip) %}
{% if field.errors %}
<div class="error global-error">
{{ form_field_errors(field) }}
</div>
{% endif %}
{% if field.type in ('HiddenField', 'CSRFTokenField') %}
{{ field() }}
{% endif %}
{% endfor %}
{%- endmacro -%}
{%- macro form_submit(title='Absenden', back=none, back_title='Zurück', disabled=false, id=none) -%}
<div class="ym-fbox-button">
<input type="submit" value="{{ title }}"{% if disabled %} disabled{% endif %}{% if id %} id="{{ id }}"{% endif %}>
{% if back %}
<input type="button" onclick="location.href = '{{ back }}';" value="{{ back_title }}">
{% endif %}
</div>
{%- endmacro -%}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment