-
-
Save TorbenKoehn/4c0180c87393bd44315da523f7971b33 to your computer and use it in GitHub Desktop.
{% use 'form_div_layout.html.twig' %} | |
{% block form_start -%} | |
{% set attr = attr|merge({class: (attr.class|default('') ~ ' ui form')|trim}) %} | |
{{- parent() -}} | |
{%- endblock form_start %} | |
{# Widgets #} | |
{% block form_widget_simple -%} | |
{{- parent() -}} | |
{%- endblock form_widget_simple %} | |
{% block textarea_widget -%} | |
{% set attr = attr|merge({class: (attr.class|default('') ~ ' form-control')|trim}) %} | |
{{- parent() -}} | |
{%- endblock textarea_widget %} | |
{% block button_widget -%} | |
{% set attr = attr|merge({class: (attr.class|default('') ~ ' ui button')|trim}) %} | |
{{- parent() -}} | |
{%- endblock %} | |
{% block money_widget -%} | |
{{- block('form_widget_simple') -}} | |
{%- endblock money_widget %} | |
{% block percent_widget -%} | |
{{- block('form_widget_simple') -}} | |
{%- endblock percent_widget %} | |
{% block datetime_widget -%} | |
{{- block('form_widget_simple') -}} | |
{%- endblock datetime_widget %} | |
{% block date_widget -%} | |
{{- block('form_widget_simple') -}} | |
{%- endblock date_widget %} | |
{% block time_widget -%} | |
{{- block('form_widget_simple') -}} | |
{%- endblock time_widget %} | |
{% block dateinterval_widget %} | |
{{- block('form_widget_simple') -}} | |
{% endblock dateinterval_widget %} | |
{% block checkbox_widget -%} | |
<div class="ui toggle checkbox"> | |
{% set attr = attr|merge({class: (attr.class|default('') ~ ' hidden')|trim}) %} | |
{{- form_label(form, null, { widget: parent() }) -}} | |
</div> | |
{%- endblock checkbox_widget %} | |
{% block radio_widget -%} | |
<div class="ui radio checkbox"> | |
{% set attr = attr|merge({class: (attr.class|default('') ~ ' hidden')|trim}) %} | |
{{- form_label(form, null, { widget: parent() }) -}} | |
</div> | |
{%- endblock radio_widget %} | |
{# Labels #} | |
{% block form_label -%} | |
{{- parent() -}} | |
{%- endblock form_label %} | |
{% block choice_label -%} | |
{{- block('form_label') -}} | |
{% endblock %} | |
{% block checkbox_label -%} | |
{{- block('checkbox_radio_label') -}} | |
{%- endblock checkbox_label %} | |
{% block radio_label -%} | |
{{- block('checkbox_radio_label') -}} | |
{%- endblock radio_label %} | |
{% block checkbox_radio_label %} | |
{# Do not display the label if widget is not defined in order to prevent double label rendering #} | |
{% if widget is defined %} | |
{% if required %} | |
{% set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' required')|trim}) %} | |
{% endif %} | |
{% if label is not same as(false) and label is empty %} | |
{%- if label_format is not empty -%} | |
{% set label = label_format|replace({ | |
'%name%': name, | |
'%id%': id, | |
}) %} | |
{%- else -%} | |
{% set label = name|humanize %} | |
{%- endif -%} | |
{% endif %} | |
<label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}> | |
{{- widget|raw }} {{ label is not same as(false) ? (translation_domain is same as(false) ? label : label|trans({}, translation_domain)) -}} | |
</label> | |
{% endif %} | |
{% endblock checkbox_radio_label %} | |
{# Rows #} | |
{% block form_row -%} | |
<div class="field{% if not valid %} error{% endif %}"> | |
{{- form_label(form) -}} | |
{{- form_widget(form) -}} | |
{{- form_errors(form) -}} | |
</div> | |
{%- endblock form_row %} | |
{% block button_row -%} | |
{{- form_widget(form) -}} | |
{%- endblock button_row %} | |
{% block choice_row -%} | |
{{- block('form_row') }} | |
{%- endblock choice_row %} | |
{% block date_row -%} | |
{{- block('form_row') }} | |
{%- endblock date_row %} | |
{% block time_row -%} | |
{{- block('form_row') }} | |
{%- endblock time_row %} | |
{% block datetime_row -%} | |
{{- block('form_row') }} | |
{%- endblock datetime_row %} | |
{% block checkbox_row -%} | |
<div class="field{% if not valid %} error{% endif %}"> | |
{{- form_widget(form) -}} | |
{{- form_errors(form) -}} | |
</div> | |
{%- endblock checkbox_row %} | |
{% block radio_row -%} | |
<div class="field{% if not valid %} error{% endif %}"> | |
{{- form_widget(form) -}} | |
{{- form_errors(form) -}} | |
</div> | |
{%- endblock radio_row %} | |
{# Errors #} | |
{% block form_errors -%} | |
{% if errors|length > 0 -%} | |
<div class="ui pointing red label"> | |
<i class="warning sign icon"></i> | |
{%- for error in errors -%} | |
{{ error.message }} | |
{%- endfor -%} | |
</div> | |
{%- endif %} | |
{%- endblock form_errors %} |
I'm having trouble with checkbox / radio buttons in Symfony 3 with Semantic-ui 2.2. Tried this template but didn't work either. The problem is I can't select them. Any clue in what i'm doing wrong ?
I'm with same problem, to solve it I've changed the checkbox block to:
{% block checkbox_widget -%}
<div class="ui toggle checkbox">
{{ parent() }}
<label>{{ form.vars.label }}</label>
</div>
{%- endblock checkbox_widget %}
{% block checkbox_widget -%}
<div class="ui toggle checkbox">
{{ parent() }}
{{- form_label(form, null, { widget: parent() }) -}}
</div>
{%- endblock checkbox_widget %}
Worked for me. You need also to comment out "checkbox_label" block.
Probably a better fix is this replacement for the checkbox_radio_label
(it just takes the widget out of the label, as per Semantic UI docs:
{% block checkbox_radio_label %}
{# Do not display the label if widget is not defined in order to prevent double label rendering #}
{% if widget is defined %}
{% if required %}
{% set label_attr = label_attr|merge({class: (label_attr.class|default('') ~ ' required')|trim}) %}
{% endif %}
{% if label is not same as(false) and label is empty %}
{%- if label_format is not empty -%}
{% set label = label_format|replace({
'%name%': name,
'%id%': id,
}) %}
{%- else -%}
{% set label = name|humanize %}
{%- endif -%}
{% endif %}
{{- widget|raw }}
<label{% for attrname, attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>
{{ label is not same as(false) ? (translation_domain is same as(false) ? label : label|trans({}, translation_domain)) -}}
</label>
{% endif %}
{% endblock checkbox_radio_label %}
Problem with DateTime widget to :/
Fix with :
{% block datetime_widget -%}
{% if widget == 'single_text' %}
{{- block('form_widget_simple') -}}
{% else -%}
{% set attr = attr|merge({class: (attr.class|default('') ~ ' inline fields')|trim}) -%}
<div {{ block('widget_container_attributes') }}>
{{- form_errors(form.date) -}}
{{- form_errors(form.time) -}}
{{- form_widget(form.date, { datetime: true } ) -}}
{{- form_widget(form.time, { datetime: true } ) -}}
</div>
{%- endif %}
{%- endblock datetime_widget %}
{% block date_widget -%}
{% if widget == 'single_text' %}
{{- block('form_widget_simple') -}}
{% else -%}
{% set attr = attr|merge({class: (attr.class|default('') ~ ' inline fields')|trim}) -%}
{% if datetime is not defined or not datetime -%}
<div {{ block('widget_container_attributes') -}}>
{%- endif %}
{{- date_pattern|replace({
'{{ year }}': form_widget(form.year),
'{{ month }}': form_widget(form.month),
'{{ day }}': form_widget(form.day),
})|raw -}}
{% if datetime is not defined or not datetime -%}
</div>
{%- endif -%}
{% endif %}
{%- endblock date_widget %}
{% block time_widget -%}
{% if widget == 'single_text' %}
{{- block('form_widget_simple') -}}
{% else -%}
{% set attr = attr|merge({class: (attr.class|default('') ~ ' inline fields')|trim}) -%}
{% if datetime is not defined or false == datetime -%}
<div {{ block('widget_container_attributes') -}}>
{%- endif -%}
{{- form_widget(form.hour) }}{% if with_minutes %}:{{ form_widget(form.minute) }}{% endif %}{% if with_seconds %}:{{ form_widget(form.second) }}{% endif %}
{% if datetime is not defined or false == datetime -%}
</div>
{%- endif -%}
{% endif %}
{%- endblock time_widget %}
Just add CSS to do like bootstrap :
#appbundle_comment_date select {
width: auto;
}
LexikFormFilterBundle Filters\DateRangeFilterType::class with https://github.com/mdehoog/Semantic-UI-Calendar:
{% block filter_date_range_widget %}
<div class="filter-date-range">
<div class="ui calendar">
<div class="ui input left icon">
<i class="calendar icon"></i>
{{ form_widget(form.left_date, {'attr': attr}) }}
</div>
</div>
<div class="ui calendar">
<div class="ui input left icon">
<i class="calendar icon"></i>
{{ form_widget(form.right_date, {'attr': attr}) }}
</div>
</div>
</div>
{% endblock filter_date_range_widget %}
Was just in an over-deadline project & trying to devote time for implementing form theme for semantic UI. You saved me alot! Thank you 👍
problem with datetime widget