NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #3975 most downloaded on Packagist
Handy library to generate HTML
Last release 4 months ago
05 Jun 2026
Release timing varies
gaps range from 2 weeks to 7 months
Nearly every release is documented
notes for 28 of 28 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
28 releases · first in 2021
One column per quarter.
New #276 : Add beforeInput() and afterInput() methods to abstract BooleanInputTag , extended by Radio and Checkbox ( @vjik )
New #274 : Add test helper functions for controlling HTML ID generation ( @vjik )
New #270 : Allow passing int , float and null as tag content ( @vjik )
int, float and null as tag content (@vjik)LogicException in Tag::id() when id is empty string (@razvbir)CheckboxItem and RadioItem properties required (@vjik)$options parameter to $attributes in Html::addCssClass(), Html::removeCssClass(),Html::addCssStyle() and Html::removeCssStyle() methods (@vjik)Chg #243 : Deprecate static constructors such as TagName::tag() in favor of new TagName() ( @razvbir )
$attributes parameter to Html::li() method (@gauravkumar2525)TagName::tag() in favor of new TagName() (@razvbir)RadioList::addRadioWrapClass() method for cleaner class addition (@vjik)New #249 : Add Tag::addStyle() and Tag::removeStyle() methods ( @vjik )
New #237 : Add classes for Code and Pre tags, Html::code() and Html::pre() methods ( @FrankiFixx )
Chg #240 , #242 : Change PHP constraint in composer.json to 8.1 - 8.4 ( @vjik )
composer.json to 8.1 - 8.4 (@vjik)$content parameter optional in Button factories (@FrankiFixx)null to Select::value() method (@vjik)loading attribute before src (@samdark)Enh #230 : Add backed enumeration value support to Html::addCssClass() , Tag::addClass() and Tag::class() methods ( @terabytesoftw )
Html::addCssClass(), Tag::addClass() and Tag::class()New #224 : Add optional wrap parameter to BooleanInputTag::label() method that controls whether to wrap input tag with label tag or place them aside (
wrap parameter to BooleanInputTag::label() method that controls whether to wrap input tagCheckboxList::checkboxLabelWrap() and RadioList::radioLabelWrap() methods (@vjik)CheckboxList::checkboxWrapTag(), CheckboxList::checkboxWrapAttributes(), CheckboxList::checkboxWrapClass(),CheckboxList::addCheckboxWrapClass(), RadioList::radioWrapTag(), RadioList::radioWrapAttributes(),RadioList::radioWrapClass() and RadioList::addRadioWrapClass() (@vjik)non-empty-string psalm type of Html::generateId() method result (@vjik)non-empty-string|null psalm type of Tag::id() method parameter (@vjik)New #218 : Add methods Script::nonce() and Script::getNonce() for CSP ( @Gerych1984 , @vjik )
Script::nonce() and Script::getNonce() for CSP (@Gerych1984, @vjik)Select tag (@vjik)Enh #212: Throw InvalidArgumentException in Html::renderAttribute() when attribute name is empty or contains forbidden symbols (@es-sayers, @vjik)
InvalidArgumentException in Html::renderAttribute() when attribute name is empty or contains
forbidden symbols (@es-sayers, @vjik)Stringable and array values support to textarea tag (@vjik)CheckboxList and RadioList widgets (@vjik)null value attributes in Html::renderTagAttributes() (@es-sayers)New #192: Add class for tag hr and method Html::hr() (@abdulmannans)
hr and method Html::hr() (@abdulmannans)aria-describedby attribute (@arogachev)New #182: Add ability set attributes for label of items in widgets CheckboxList and RadioList (@vjik)
CheckboxList and RadioList (@vjik)New #173: Add class for tag html and method Html::html() (@dood-)
html and method Html::html() (@dood-)PHP_EOL to "\n" (@vjik)Html::addCssClass() if passed array contains null classes only (@vjik)New #174: Add $attributes parameter to Html::ul() and Html::ol() (@AmolKumarGupta)
$attributes parameter to Html::ul() and Html::ol() (@AmolKumarGupta)null as class to Html::addCssClass(), nulled classes will be ignored (@vjik)Html::addCssClass() when class in passed options is a string (@vjik)New #137: Add $attributes parameter to Html::img() (@alien-art)
$attributes parameter to Html::img() (@alien-art)small and method Html::small() (@dood-)yiisoft/arrays version ^3.0 (@vjik)New #139: Add loading() method to Img tag (@jacobbudin)
loading() method to Img tag (@jacobbudin)yiisoft/arrays version to ^2.0 (@vjik)Tag::class() and rename Tag::replaceClass() to Tag::class() (@vjik)Html::fileInput() and Input::file(), rename Input::fileControl() to Input::file() (@vjik)Tag class: remove attributes() method and rename replaceAttributes() to attributes() (@vjik)Range class: remove outputAttributes() method and rename replaceOutputAttributes()
to outputAttributes() (@vjik)File class: remove uncheckInputAttributes() method and rename replaceUncheckInputAttributes()
to uncheckInputAttributes() (@vjik)ButtonGroup class: remove buttonAttributes() method and rename replaceButtonAttributes()
to buttonAttributes() (@vjik)CheckboxList: remove individualInputAttributes() and checkboxAttributes() methods,
rename replaceIndividualInputAttributes() to individualInputAttributes() and replaceCheckboxAttributes()
to checkboxAttributes() (@vjik)RadioList class: remove individualInputAttributes() and radioAttributes() methods,
rename replaceIndividualInputAttributes() to individualInputAttributes() and replaceRadioAttributes()
to radioAttributes() (@vjik)NoEncodeStringableInterface extend from Stringable interface (@vjik)ButtonGroup widget (@vjik)…Range::addOutputAttributes() and deprecate Tag::attributes(), ButtonGroup::buttonAttributes(), RadioList::radioAttributes(), RadioList::individualInpu…
Tag::addAttributes(), ButtonGroup::addButtonAttributes(), RadioList::addRadioAttributes(),
RadioList::addIndividualInputAttributes(), CheckboxList::addCheckboxAttributes(),
CheckboxList::addIndividualInputAttributes(), File::addUncheckInputAttributes(), Range::addOutputAttributes() and
deprecate Tag::attributes(), ButtonGroup::buttonAttributes(), RadioList::radioAttributes(),
RadioList::individualInputAttributes(), CheckboxList::checkboxAttributes(),
CheckboxList::individualInputAttributes(), File::uncheckInputAttributes(), Range::outputAttributes() (@vjik)Tag::addClass() and deprecate Tag::class() (@vjik)enctypeApplicationXWwwFormUrlencoded(), enctypeMultipartFormData() and enctypeTextPlain()
to Form tag class (@vjik)New #97: Add classes for tags Body, Article, Section, Nav, Aside, Hgroup, Header, Footer, Address and methods Html::body(), Html::article(), Html::sec
Body, Article, Section, Nav, Aside, Hgroup, Header, Footer, Address
and methods Html::body(), Html::article(), Html::section(), Html::nav(), Html::aside(), Html::hgroup(),
Html::header(), Html::footer(), Html::address() (@soodssr)Form and method Html::form() (@vjik)File for an input tag with type file and methods Html::file() and
Input::fileControl() (@vjik)Datalist and method Html::datalist() (@vjik)Range and methods Html::range(),
Input::range() (@vjik)ButtonGroup (@vjik)Tag::unionAttributes() that available for all tags (@vjik)Legend, class for tag Fieldset, methods Html::legend() and Html::fieldset() (@vjik)HtmlAttributes, too obsessive for package users (@vjik)$attributes to methods Html::input(), Html::buttonInput(), Html::submitInput()
and Html::resetInput() (@vjik)Select::optionsData() (@vjik)Select::optionsData() (@vjik)CheckboxList::name() and RadioList::name() (@vjik)New #95: Add class for tag Title and method Html::title() (@vjik)
Title and method Html::title() (@vjik)H1-6 and methods Html::h1(), Html::h2(), Html::h3(), Html::h4(),
Html::h5(), Html::h6() (@vjik)Picture, Audio, Video, Source and Track (@Gerych1984, @vjik)Enh #93: Add support for yiisoft/arrays version ^2.0 (@vjik)
yiisoft/arrays version ^2.0 (@vjik)New #89: Add method nofollow() to the A tag (@soodssr)
nofollow() to the A tag (@soodssr)itemsFromValues() to widgets RadioList and CheckboxList that set items with labels equal
to values (@vjik)$attributes containing tag attributes in terms of name-value pairs has been
added to methods Html::textInput(), Html::hiddenInput(), Html::passwordInput(), Html::fileInput(),
Html::radio(), Html::checkbox(), Html::textarea() (@vjik)New #88: Add Noscript tag support and shortcuts for Script tag via methods Script::noscript() and Script::noscriptTag() (@vjik)
Noscript tag support and shortcuts for Script tag via methods Script::noscript()
and Script::noscriptTag() (@vjik)New #74: Add classes for tags Em, Strong, B and I (@vjik)
Em, Strong, B and I (@vjik)as() and preload() to the Link tag (@vjik)NoEncode class designed to wrap content that should not be encoded in HTML tags (@vjik)null argument to methods Tag::class(), Tag::replaceClass(), BooleanInputTag::label() and
BooleanInputTag::sideLabel() (@vjik)CheckboxList and RadioList widgets via methods
CheckboxList::individualInputAttributes(), CheckboxList::replaceIndividualInputAttributes(),
RadioList::individualInputAttributes() and RadioList::replaceIndividualInputAttributes() (@vjik)Html::ATTRIBUTE_ORDER values (@terabytesoftw)New #70: Add support \Stringable as content in methods Html::tag(), Html::normalTag(), Html::a(), Html::label(), Html::option(), Html::div(), Html::sp
\Stringable as content in methods Html::tag(), Html::normalTag(), Html::a(),
Html::label(), Html::option(), Html::div(), Html::span(), Html::p(), Html::li(), Html::caption(),
Html::td(), Html::th() (@vjik)Script::getContent() and Style::getContent() (@vjik)New #65: Add classes for table tags Table, Caption, Colgroup, Col, Thead, Tbody, Tfoot, Tr, Th, Td (@vjik)
Table, Caption, Colgroup, Col, Thead, Tbody, Tfoot, Tr, Th, Td (@vjik)Br (@vjik)Bug #68: Fix TagContentTrait::content() and TagContentTrait::addContent() when used with named parameters (@vjik)
TagContentTrait::content() and TagContentTrait::addContent() when used with named parameters (@vjik)- Initial release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →