Атрибуты, созданные с помощью Атрибут
класс сбежал.
Атрибут::__toString()
код следующий.
$возврат = '';
/** @var \Drupal\Core\Template\AttributeValueBase $value */
foreach ($this->storage as $name => $value) {
$рендеринг = $значение->рендеринг();
если ($ визуализировано) {
$возврат .= '' . $ визуализировано;
}
}
возврат $возврат;
В классе, который расширяет AttributeValueBase
, Например АтрибутСтрока
, оказывать()
содержит следующий код.
значение = (строка) $это;
if (isset($this->value) && static::RENDER_EMPTY_ATTRIBUTE || !empty($value)) {
вернуть Html::escape($this->name) . '="' . $значение . '"';
}
АтрибутСтрока::__toString()
содержит следующий код.
вернуть Html::escape($this->value);
Html:: побег()
вызывается для имени атрибута и его значения. Вот почему атрибут, созданный с использованием кода, подобного следующему, одинарные кавычки внутри имени и значения атрибута экранируются.
$ атрибуты = новый атрибут (массив ());
$attributes['id'] = 'носки';
$attributes['style'] = 'цвет фона: белый';
эхо '<кот'. $атрибуты. '>';
Массив атрибутов::__toString()
использует следующий код.
// Отфильтровать все пустые значения перед печатью.
$this->value = array_unique(array_filter($this->value));
return Html::escape(implode(' ', $this->value));
Это означает, что для атрибута, построенного с использованием кода, подобного приведенному ниже, значение атрибута экранируется.
$attributes = новый атрибут();
$attributes['класс'] = массив();
$attributes['класс'][] = 'кот';