On this page
Helpers
HtmlAttributes
Available since version 2.13.0
The HtmlAttributes
helper can be used when processing and outputting HTML attributes.
The helper initializes and returns Laminas\View\HtmlAttributesSet
object instances, which can then be manipulated and converted to strings.
Basic Usage
<?php
$attributes = $this->htmlAttributes(['class' => 'input-group']);
if ($form->hasValidated()) {
$attributes->add('class', 'has-validation');
}
?>
<div<?= $attributes ?>></div>
Output:
<div class="input-group has-validation"></div>
Getting an HtmlAttributesSet
Object Instance
To get an empty HtmlAttributesSet
object instance, call the helper without any parameters.
$attributes = $this->htmlAttributes();
You may also set one or more attributes at the same time.
$attributes = $this->htmlAttributes([
'id' => 'login-username',
'class' => ['input-group', 'mb-3']
]);
Calling the helper always creates a new object instance.
Several HtmlAttributesSet
object instances can be used in the same template.
Using HtmlAttributesSet
as an Array
HtmlAttributeSet
extends PHP's ArrayObject
which allows it to be used like an array.
Setting an Attribute
$attributes['id'] = 'login-username';
$attributes['class'] = ['input-group', 'mb-3'];
Setting Several Attributes at Once
Several attributes can be set at once using the HtmlAttributesSet::set(iterable $attributes)
method.
$attributes->set([
'id' => 'login-username',
'class' => ['input-group', 'mb-3']
])
Adding a Value to an Attribute
Attribute values can added using the HtmlAttributesSet::add(string $name, $value)
method.
The method will set the attribute if it does not exist.
<?php $attributes = $this->htmlAttributes(['class' => 'input-group']); ?>
<div<?= $attributes ?>></div>
<?php $attributes->add('class', 'has-validation'); ?>
<div<?= $attributes ?>></div>
Output:
<div class="input-group"></div>
<div class="input-group has-validation"></div>
Merging Attributes with Existing Attributes
Attributes and their values can be merged with existing attributes and their values using the HtmlAttributesSet::merge(iterable $attributes)
method.
<?php
$attributes = $this->htmlAttributes(['class' => 'input-group']);
$attributes->merge([
'id' => 'login-username',
'class' => 'mb-3'
]);
?>
<div<?= $attributes ?>></div>
Output:
<div id="login-username" class="input-group mb-3"></div>
Checking If a Specific Attribute with a Specific Value Exists
The existence of a specific attribute with a specific value can be checked using the HtmlAttributesSet::hasValue(string $name, string $value)
method.
The method handles cases where the attribute does not exist or has multiple values.
if ($attributes->hasValue('class', 'has-validation')) {
// ...
}
Outputting Attributes
HtmlAttributesSet
implements PHP's __toString()
magic method so its object instances can be printed like a string.
When an HtmlAttributesSet
object is converted to a string, attribute names and values are automatically escaped using escapers from the EscapeHtml and EscapeHtmlAttr view helpers.
<?php
$attributes = $this->htmlAttributes([
'title' = 'faketitle onmouseover=alert(/laminas-project/);'
]);
?>
<a<?= $attributes ?>>click</a>
Output:
<a title="faketitle onmouseover=alert(/laminas-project/);">click</a>