Рейтинг:0

How to add a boolen attribute to a form?

флаг us

I am trying to add the boolean attribute "novalidate" to all my forms.

I have tried numerous approaches in my theme_preprocess_form function but no luck. I see in some preprocess functions, $variables['attribute'] is an object and has methods like addClass() and setAttribute(). But in _preprocess_form it is an array. Plus setAttribute doesnt sound like it will do boolean attributes anyway.

I tried to simply override the twig template for a form and do this:

<form{{ attributes }} novalidate>
  {{ children }}
</form>

but even that outputs:

<form novalidate="">
флаг cn
`novalidate=""` подходит для спецификации HTML - логические атрибуты могут иметь значение, если это пустая строка или та же строка (без учета регистра), что и имя атрибута. Так что `novalidate="novalidate"` тоже подойдет. Если вы следуете этим правилам, существование атрибута считается истинным независимо от значения. См. https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes#boolean_attributes.
Jaypan avatar
флаг de
Вы должны поставить это как ответ Клайва - это правильный ответ на вопрос.
флаг cn
Я был в раздумьях, @Jaypan, может быть, «правильный» ответ на этот вопрос — тот, который позволяет Twig/Drupal выводить голую `novalidate`, хотя технически это не имеет значения? Наверное, слишком много думал, я добавлю ответ
Jaypan avatar
флаг de
Что ж, если кто-то придет с этим другим ответом, то он тоже может быть ответом на вопрос. Оба будут действительными ответами.
Рейтинг:3
флаг cn

Возможно, вы пытаетесь решить не проблему здесь. валидатировать = "" подходит для спецификации HTML - логические атрибуты могут иметь значение, если это пустая строка или та же строка (без учета регистра), что и имя атрибута. Так новалидате = "новалидате" тоже бы ладно.

Если вы следуете этим правилам, существование атрибута считается истинный, независимо от значения.

Видеть https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes#boolean_attributes для получения дополнительной информации.

liquidcms avatar
флаг us
Да, я полагал, что это будет работать функционально, хотя я вижу, что на D.org есть несколько проблем с людьми, которые спрашивают, как добавить «логические атрибуты», поскольку они поддерживаются в HTML5, и мне было интересно, есть ли способ сделать это «правильно». " путь.
флаг cn
Да, я бы тоже этого хотел - это мой HTML, дай мне то, что я хочу! Но слишком много способов манипулирования HTML, чтобы беспокоиться об этом, ИМХО. Например, когда вы анализируете HTML в `DOMDocument`, он хранится в структуре XML. Атрибуты не могут иметь пустых значений в XML, поэтому логическим атрибутам HTML по умолчанию присваивается пустое значение, и когда документ сохраняется как HTML, вы получаете то, что видели в своем вопросе. Drupal использует `DOMDocument` в различных частях пайплайна, так что это может быть буквально то, что здесь происходит. Слишком много усилий, чтобы измениться, я бы сказал

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.