Puncte:1

De ce ghilimelele unice sunt scăpat în interiorul atributului elementului de randare?

drapel in

Când textul atributului conține un singur ghilimeleu, cum ar fi „Este o zi frumoasă”, acel ghilimeleu unic atunci când este redat este eliminat în „Este o zi frumoasă”. De ce se întâmplă asta și poate fi prevenit? Twig face asta scăpa?

https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Template%21Attribute.php/class/Attribute/8.2.x

se spune:

„Cheile și valorile atributelor sunt eliminate automat pentru ieșire cu Html::escape().”

Si deasemenea:

„Valorile atributelor sunt considerate text simplu și sunt tratate ca atare. Dacă este detectat un șir HTML sigur, acesta este convertit în text simplu cu PlainTextOutput::renderFromHtml() înainte de a fi eliminat.”

Nici unul dintre aceștia nu ar trebui să facă această conversie.

drapel ru
*De ce se întâmplă asta și poate fi prevenit? * Pentru că durează doar 2 secunde pentru a vedea problema masivă de securitate: `
drapel ru
Practic, în 99 din 100 de cazuri, răspunsul la *De ce este scăpat?* este *Pentru că cineva a găsit o problemă de securitate* ;-)
drapel cn
Vreau un tricou cu asta pe @Hudri, o frază grozavă!
Puncte:0
drapel us

Atribute construite prin intermediul Atribut clasa sunt scăpate.

The Atribut::__toString() codul este următorul.

$retur = '';

/** @var \Drupal\Core\Template\AttributeValueBase $value */
foreach ($this->storage as $name => $value) {
  $rendat = $valoare->render();
  dacă ($rendat) {
    $retur .= ' ' . $rendat;
  }
}
return $retur;

Într-o clasă care se extinde AttributeValueBase, de exemplu AttributeString, face() conţine următorul cod.

valoare = (șir) $this;
if (isset($aceasta->valoare) && static::RENDER_EMPTY_ATTRIBUTE || !empty($valoare)) {
  returnează Html::escape($this->name) . '="' . $valoare . '"';
}

AttributeString::__toString() conţine următorul cod.

return Html::escape($aceasta->valoare);

Html::escape() este apelat pentru numele atributului și valoarea acestuia. De aceea, un atribut construit folosind cod similar cu următoarele ghilimele simple din numele și valoarea atributului sunt scăpate.

$atribute = nou Atribut(array());
$attributes['id'] = 'șosete';
$attributes['style'] = 'culoare-fond:alb';
ecou '<pisica' . $atribute . '>';

AttributeArray::__toString() folosește următorul cod.

// Filtrați toate valorile goale înainte de imprimare.
$this->value = array_unique(array_filter($this->value));
return Html::escape(implode(' ', $aceasta->valoare));

Aceasta înseamnă că pentru un atribut construit folosind cod similar celui următor, valoarea atributului este scăpată.

$atribute = Atribut nou();
$atribute['clasa'] = array();
$attributes['class'][] = 'cat';

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.