Score: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 flag
`novalidate=""` is fine for the HTML spec - boolean attributes can have a value as long as it's an empty string or the same (case-insensitive) string as the attribute name. So `novalidate="novalidate"` would also be fine. If you follow those rules, the attribute's existence is taken to mean `true` regardless of the value. See https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes#boolean_attributes
Jaypan avatar
de flag
You should put that as an answer Clive - it's the correct answer to the question.
cn flag
I was in two minds @Jaypan, maybe the "proper" answer to this is one which allows Twig/Drupal to output the bare `novalidate`, even though it doesn't technically matter? Probably over-thinking it, I'll add an answer
Jaypan avatar
de flag
ถ้ามีคนมาพร้อมกับคำตอบอื่น ๆ มันก็สามารถเป็นคำตอบสำหรับคำถามได้เช่นกัน ทั้งสองจะเป็นคำตอบที่ถูกต้อง
Score:3
ธง cn

คุณอาจกำลังพยายามแก้ไขปัญหาที่ไม่ใช่ที่นี่ โนวาลิเดต="" ใช้ได้สำหรับข้อกำหนด HTML - แอตทริบิวต์บูลีนสามารถมีค่าได้ตราบเท่าที่เป็นสตริงว่างหรือสตริง (ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่) เดียวกันกับชื่อแอตทริบิวต์ ดังนั้น novalidate = "โนวาลิเดต" ก็จะดี

หากคุณทำตามกฎเหล่านั้น การมีอยู่ของแอตทริบิวต์จะถือว่ามีความหมาย จริงโดยไม่คำนึงถึงมูลค่า

ดู https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes#boolean_attributes สำหรับข้อมูลเพิ่มเติม

liquidcms avatar
us flag
ใช่ ฉันคิดว่าสิ่งนี้จะใช้งานได้แม้ว่าฉันเห็นว่ามีปัญหาเล็กน้อยใน D.org ที่มีคนถามถึงวิธีเพิ่ม "แอตทริบิวต์บูลีน" เนื่องจากรองรับใน HTML5 และสงสัยว่ามีวิธีทำเช่นนี้ "ถูกต้องหรือไม่ " ทาง.
cn flag
ใช่ มันเป็นสิ่งที่ฉันต้องการเช่นกัน - มันคือ HTML ของฉัน ขอสิ่งที่ฉันต้องการ! แต่มีวิธีมากเกินไปที่จะจัดการกับ HTML ที่ต้องกังวลเกี่ยวกับมัน IMHO ตัวอย่างเช่น เมื่อคุณแยกวิเคราะห์ HTML เป็น `DOMDocument` จะถูกเก็บไว้ในโครงสร้าง XML แอตทริบิวต์ต้องไม่มีค่าว่างใน XML ดังนั้นแอตทริบิวต์ HTML แบบบูลีนจะได้รับค่าว่างตามค่าเริ่มต้น และเมื่อบันทึกเอกสารเป็น HTML คุณจะได้สิ่งที่เห็นในคำถาม Drupal ใช้ `DOMDocument` ในส่วนต่างๆ ของไปป์ไลน์ ดังนั้นนั่นอาจเป็นสิ่งที่เกิดขึ้นที่นี่อย่างแท้จริง ความพยายามมากเกินไปที่จะเปลี่ยนฉันจะบอกว่า

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา