-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
Not render Bootstrap radio label when false #31090
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@@ -248,10 +248,12 @@ | |||
{%- endif -%} | |||
|
|||
{{ widget|raw }} | |||
<label{% with { attr: label_attr } %}{{ block('attributes') }}{% endwith %}> | |||
{{- label is not same as(false) ? (translation_domain is same as(false) ? label : label|trans({}, translation_domain)) -}} | |||
{{- form_errors(form) -}} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i think it's intended to still render errors here, which is up for debate in general i believe :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To show the error inside the label as well?
Could you suggest another way to not show the <label>
when it was set to false?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Make sure errors are a part of the label on bootstrap 4 - this is a requirement for WCAG2
Ok clear 👍 Let's make sure that rule gets preserved. Then the question would be whether a label still should get rendered even when false
gets passed.
The use-case here is that we want to render a custom label, while we want to keep using the Bootstrap theme for rendering the widget.
The problem is that {{ form_widget(} }}
does render both the widget and the label. By passing false
we basically say that userland is responsible for complying to the WCAG2 that the error should be rendered inside the label.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i once suggested to make the split explicit, i.e. form_label
+ form_label_with_errors
{{ form_widget(} }} does render both the widget and the label
this sounds like a violation of concerns already :)
im not sure what path to take. I agree a user could be responsible, and IMHO SF should provide low-level building blocks for it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can't we fix the initial point for now? Display the label if there are errors?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Both when a value or false
is passed for label
the errors do get rendered. Rendering the errors in the label according to WCAG2 should get preserved.
The problem for userland ChoiceType
implementations; when label => false
is passed, the label value does not get rendered while the <label>
tag does get rendered.
So the change I suggest via this PR is to also not render the <label>
tag when false
is passed. The error message will then bubble up to the parent (that also complies to WCAG2).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you sure that errors bubble up?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
friendly ping @rvanlaak
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Have been working on a unit test to verify this, but did not manage to complete that yet.
Closing this PR as it is stale for a very long time. Feel free to reopen when ready. |
Bootstrap form theme does still render the
<label>
, even when label is set tofalse
. The whole label should be wrapped in the check forfalse
.