yiisoft / html
Handy library to generate HTML
Fund package maintenance!
Open Collective
yiisoft
Installs: 43 253
Dependents: 22
Suggesters: 0
Security: 0
Stars: 19
Watchers: 16
Forks: 6
Open Issues: 1
Requires
- php: ^7.4|^8.0
- yiisoft/arrays: ^1.0
- yiisoft/json: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- roave/infection-static-analysis-plugin: ^1.7
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^4.6
This package is auto-updated.
Last update: 2021-02-23 16:50:10 UTC
README
Yii HTML
The package provides:
- tag classes
A
,Button
,Div
,Img
,Input
(and specializedCheckbox
,Radio
),Label
,Li
,Link
,Meta
,Ol
,Optgroup
,Option
,P
,Script
,Select
,Span
,Style
,Textarea
,Ul
; CustomTag
class that help generate custom tag with any attributes;- HTML widgets
CheckboxList
andRadioList
; Html
helper that has static methods to generate HTML, create tag and HTML widget objects.
Requirements
- PHP 7.4 or higher.
Installation
composer require yiisoft/html --prefer-dist
General usage
<?php use Yiisoft\Html\Html; use Yiisoft\Html\Tag\Meta; ?> <?= Meta::pragmaDirective('X-UA-Compatible', 'IE=edge') ?> <?= Meta::data('viewport', 'width=device-width, initial-scale=1') ?> <?= Html::cssFile( 'https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css', [ 'integrity' => 'sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T', 'crossorigin' => 'anonymous' ] ) ?> <?= Html::cssFile('/css/site.css', ['rel' => 'stylesheet']); ?> <?= Html::openTag('footer', ['class' => 'footer']) ?> <?= Html::openTag('div', ['class' => 'container flex-fill']) ?> <?= Html::p('', ['class' => 'float-left']) ?> <?= Html::openTag('p', ['class' => 'float-right']) ?> <?= 'Powered by' ?> <?= Html::a( 'Yii Framework', 'https://www.yiiframework.com/', ['rel' => 'external'] ) ?> <?= Html::closeTag('p') ?> <?= Html::closeTag('div') ?> <?= Html::closeTag('footer') ?>
Tag objects usage
Tag classes allow working with tag as is object and then get a HTML code by method render()
or type casting to string. For example, code:
echo \Yiisoft\Html\Tag\Div::tag() ->content( \Yiisoft\Html\Tag\A::tag() ->mailto('info@example.com') ->content('contact us') ->render() ) ->encode(false) ->id('ContactEmail') ->class('red');
... will generate HTML:
<div id="ContactEmail" class="red"><a href="mailto:info@example.com">contact us</a></div>
Package has clasess for tags
A
, Button
, Div
, Img
, Input
(and specialized Checkbox
, Radio
), Label
, Li
, Link
, Meta
, Ol
,
Optgroup
, Option
, P
, Script
, Select
, Span
, Style
, Textarea
, Ul
.
Generating custom tags
For generate custom tags, use the CustomTag
class. For example, code:
echo \Yiisoft\Html\Tag\CustomTag::name('b') ->content('text') ->attribute('title', 'Important');
... will generate HTML:
<b title="Important">text</b>
HTML widgets usage
CheckboxList
echo \Yiisoft\Html\Widget\CheckboxList\CheckboxList::create('count') ->items([1 => 'One', 2 => 'Two', 5 => 'Five']) ->uncheckValue(0) ->value(2, 5) ->containerAttributes(['id' => 'main']);
Result will be:
<input type="hidden" name="count" value="0"> <div id="main"> <label><input type="checkbox" name="count[]" value="1"> One</label> <label><input type="checkbox" name="count[]" value="2" checked> Two</label> <label><input type="checkbox" name="count[]" value="5" checked> Five</label> </div>
RadioList
echo \Yiisoft\Html\Widget\RadioList\RadioList::create('count') ->items([1 => 'One', 2 => 'Two', 5 => 'Five']) ->uncheckValue(0) ->value(2) ->containerAttributes(['id' => 'main']) ->render();
Result will be:
<input type="hidden" name="test" value="0"> <div id="main"> <label><input type="radio" name="test" value="1"> One</label> <label><input type="radio" name="test" value="2" checked> Two</label> <label><input type="radio" name="test" value="5"> Five</label> </div>
Html
helper usage
Html
helper methods are static so usage is like the following:
echo \Yiisoft\Html\Html::a('Yii Framework', 'https://www.yiiframework.com/');
Overall the helper has the following method groups.
Creating tag objects
Custom tag
- tag
- normalTag
- voidTag
Base tags
- div
- img
- meta
- p
- script
- span
- style
List tags
- ul
- ol
- li
Hyperlink tags
- a
- mailto
Link tags
- link
- cssFile
- javaScriptFile
Form tags
- button
- buttonInput
- checkbox
- fileInput
- hiddenInput
- input
- label
- optgroup
- option
- passwordInput
- radio
- resetButton
- resetInput
- select
- submitButton
- submitInput
- textInput
- textarea
Generating tag parts
- openTag
- closeTag
- renderTagAttributes
Creating HTML widget objects
- radioList
- checkboxList
Working with tag attributes
- generateId
- getArrayableName
- getNonArrayableName
- normalizeRegexpPattern
Encode and escape special characters
- encode
- encodeAttribute
- encodeUnquotedAttribute
- escapeJavaScriptStringValue
Working with CSS styles and classes
- addCssStyle
- removeCssStyle
- addCssClass
- removeCssClass
- cssStyleFromArray
- cssStyleToArray
Testing
Unit testing
The package is tested with PHPUnit. To run tests:
./vendor/bin/phpunit
Mutation testing
The package tests are checked with Infection mutation framework with Infection Static Analysis Plugin. To run it:
./vendor/bin/roave-infection-static-analysis-plugin
Static analysis
The code is statically analyzed with Psalm. To run static analysis:
./vendor/bin/psalm
License
The Yii HTML is free software. It is released under the terms of the BSD License. Please see LICENSE
for more information.
Maintained by Yii Software.