{"id":14966377,"url":"https://github.com/yiisoft/html","last_synced_at":"2026-03-13T15:01:16.723Z","repository":{"id":35060244,"uuid":"198432584","full_name":"yiisoft/html","owner":"yiisoft","description":"Handy library to generate HTML","archived":false,"fork":false,"pushed_at":"2026-01-10T18:04:08.000Z","size":616,"stargazers_count":57,"open_issues_count":13,"forks_count":22,"subscribers_count":17,"default_branch":"master","last_synced_at":"2026-03-10T08:58:08.249Z","etag":null,"topics":["hacktoberfest","html","yii3"],"latest_commit_sha":null,"homepage":"https://www.yiiframework.com/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yiisoft.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"open_collective":"yiisoft","github":["yiisoft"],"polar":"yiisoft"}},"created_at":"2019-07-23T13:07:30.000Z","updated_at":"2026-01-10T18:04:12.000Z","dependencies_parsed_at":"2023-02-10T08:30:37.616Z","dependency_job_id":"e7d26ada-a97e-4dc8-b494-91e970bbf536","html_url":"https://github.com/yiisoft/html","commit_stats":{"total_commits":241,"total_committers":26,"mean_commits":9.26923076923077,"dds":0.7427385892116183,"last_synced_commit":"4a07b1d9577518d0aea4d84c96172c4f06bfa358"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":"yiisoft/package-template","purl":"pkg:github/yiisoft/html","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yiisoft%2Fhtml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yiisoft%2Fhtml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yiisoft%2Fhtml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yiisoft%2Fhtml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yiisoft","download_url":"https://codeload.github.com/yiisoft/html/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yiisoft%2Fhtml/sbom","scorecard":{"id":627656,"data":{"date":"2025-08-11","repo":{"name":"github.com/yiisoft/html","commit":"5cf460935788e443e2753978a18c9f65b4dd85e3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.2,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":6,"reason":"Found 18/29 approved changesets -- score normalized to 6","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":5,"reason":"5 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 20 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T06:55:58.785Z","repository_id":35060244,"created_at":"2025-08-21T06:55:58.789Z","updated_at":"2025-08-21T06:55:58.789Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30469095,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T11:00:43.441Z","status":"ssl_error","status_checked_at":"2026-03-13T11:00:23.173Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hacktoberfest","html","yii3"],"created_at":"2024-09-24T13:36:17.761Z","updated_at":"2026-03-13T15:01:16.698Z","avatar_url":"https://github.com/yiisoft.png","language":"PHP","funding_links":["https://opencollective.com/yiisoft","https://github.com/sponsors/yiisoft","https://polar.sh/yiisoft"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/yiisoft\" target=\"_blank\"\u003e\n        \u003cimg src=\"https://yiisoft.github.io/docs/images/yii_logo.svg\" height=\"100px\" alt=\"Yii\"\u003e\n    \u003c/a\u003e\n    \u003ch1 align=\"center\"\u003eYii HTML\u003c/h1\u003e\n    \u003cbr\u003e\n\u003c/p\u003e\n\n[![Latest Stable Version](https://poser.pugx.org/yiisoft/html/v)](https://packagist.org/packages/yiisoft/html)\n[![Total Downloads](https://poser.pugx.org/yiisoft/html/downloads)](https://packagist.org/packages/yiisoft/html)\n[![Build status](https://github.com/yiisoft/html/actions/workflows/build.yml/badge.svg)](https://github.com/yiisoft/html/actions/workflows/build.yml)\n[![Code Coverage](https://codecov.io/gh/yiisoft/html/branch/master/graph/badge.svg)](https://codecov.io/gh/yiisoft/html)\n[![Mutation testing badge](https://img.shields.io/endpoint?style=flat\u0026url=https%3A%2F%2Fbadge-api.stryker-mutator.io%2Fgithub.com%2Fyiisoft%2Fhtml%2Fmaster)](https://dashboard.stryker-mutator.io/reports/github.com/yiisoft/html/master)\n[![static analysis](https://github.com/yiisoft/html/workflows/static%20analysis/badge.svg)](https://github.com/yiisoft/html/actions?query=workflow%3A%22static+analysis%22)\n[![psalm-level](https://shepherd.dev/github/yiisoft/html/level.svg)](https://shepherd.dev/github/yiisoft/html)\n[![type-coverage](https://shepherd.dev/github/yiisoft/html/coverage.svg)](https://shepherd.dev/github/yiisoft/html)\n\nThe package provides various tools to help with dynamic server-side generation of HTML:\n\n- Tag classes `A`, `Address`, `Article`, `Aside`, `Audio`, `B`, `Body`, `Br`, `Button`, `Caption`, `Col`, `Colgroup`,\n `Datalist`, `Div`, `Em`, `Fieldset`, `Footer`, `Form`, `H1`, `H2`, `H3`, `H4`, `H5`, `H6`, `Header`, `Hr`, `Hgroup`,\n `Html`, `I`, `Img`, `Input` (and specialized `Checkbox`, `Radio`, `Range`, `File`, `Color`), `Label`, `Legend`, `Li`, `Link`,\n `Meta`, `Nav`, `Noscript`, `Ol`, `Optgroup`, `Option`, `P`, `Picture`, `Script`, `Section`, `Select`, `Small`,\n `Source`, `Span`, `Strong`, `Style`, `Table`, `Tbody`, `Td`, `Textarea`, `Tfoot`, `Th`, `Thead`, `Title`, `Tr`,\n `Track`, `Ul`, `Video`.\n- `CustomTag` class that helps to generate custom tag with any attributes.\n- HTML widgets `ButtonGroup`, `CheckboxList` and `RadioList`.\n- All tags content is automatically HTML-encoded. There is `NoEncode` class designed to wrap content that should not be encoded.\n- `Html` helper that has static methods to generate HTML, create tags and HTML widget objects.\n\nNote that for simple static-HTML cases, it is preferred to use HTML directly.\n\n## Requirements\n\n- PHP 8.1 - 8.5.\n\n## Installation\n\nThe package could be installed with [Composer](https://getcomposer.org):\n\n```shell\ncomposer require yiisoft/html\n```\n\n## General usage\n\n```php\n\u003c?php\nuse Yiisoft\\Html\\Html;\nuse Yiisoft\\Html\\Tag\\Meta;\n?\u003e\n\n\u003c?= Meta::pragmaDirective('X-UA-Compatible', 'IE=edge') ?\u003e\n\u003c?= Meta::data('viewport', 'width=device-width, initial-scale=1') ?\u003e\n\n\u003c?= Html::cssFile(\n    'https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css',\n    [\n        'integrity' =\u003e 'sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T',\n        'crossorigin' =\u003e 'anonymous'\n    ]\n) ?\u003e\n\u003c?= Html::cssFile('/css/site.css', ['rel' =\u003e 'stylesheet']) ?\u003e\n\n\u003c?= Html::openTag('footer', ['class' =\u003e 'footer']) ?\u003e\n    \u003c?= Html::openTag('div', ['class' =\u003e 'container flex-fill']) ?\u003e\n        \u003c?= Html::p('', ['class' =\u003e 'float-left']) ?\u003e\n        \u003c?= Html::p()\n            -\u003eclass('float-right')\n            -\u003econtent(\n                'Powered by ',\n                Html::a(\n                    'Yii Framework',\n                    'https://www.yiiframework.com/',\n                    ['rel' =\u003e 'external']\n                )\n            ) ?\u003e\n    \u003c?= Html::closeTag('div') ?\u003e\n\u003c?= Html::closeTag('footer') ?\u003e\n```\n\n## Tag objects usage\n\nTag classes allow working with a tag as an object and then get an HTML code by using `render()` method or type casting\nto string. For example, the following code:\n\n```php\necho new \\Yiisoft\\Html\\Tag\\Div()\n    -\u003econtent(\n        new \\Yiisoft\\Html\\Tag\\A()\n            -\u003emailto('info@example.com')\n            -\u003econtent('contact us')\n            -\u003erender()\n    )\n    -\u003eencode(false)\n    -\u003eid('ContactEmail')\n    -\u003eclass('red');\n```\n\n... will generate the following HTML:\n\n```html\n\u003cdiv id=\"ContactEmail\" class=\"red\"\u003e\u003ca href=\"mailto:info@example.com\"\u003econtact us\u003c/a\u003e\u003c/div\u003e\n```\n\n### Generating custom tags\n\nTo generate custom tags, use the `CustomTag` class. For example, the following code:\n\n```php\necho new \\Yiisoft\\Html\\Tag\\CustomTag('b')\n    -\u003econtent('text')\n    -\u003eattribute('title', 'Important');\n```\n\n... will generate the following HTML:\n\n```html\n\u003cb title=\"Important\"\u003etext\u003c/b\u003e\n```\n\n### Encoding tags content\n\nBy default, stringable objects that implement `\\Yiisoft\\Html\\NoEncodeStringableInterface` are not encoded,\neverything else is encoded.\n\nTo change this behavior use `encode()` method passing one of the following values:\n\n- `null`: default behavior;\n- `true`: any content is encoded;\n- `false`: nothing is encoded.\n\n\u003e Note: all bundled tags and widgets implement `\\Yiisoft\\Html\\NoEncodeStringableInterface` interface and are not encoded\n\u003e by default when passed as content. Their own content is encoded.\n\nExamples:\n\n```php\n// \u003cb\u003e\u0026lt;i\u0026gt;hello\u0026lt;/i\u0026gt;\u003c/b\u003e\necho Html::b('\u003ci\u003ehello\u003c/i\u003e');\n\n// \u003cb\u003e\u003ci\u003ehello\u003c/i\u003e\u003c/b\u003e\necho Html::b('\u003ci\u003ehello\u003c/i\u003e')-\u003eencode(false);\n\n// \u003cb\u003e\u003ci\u003ehello\u003c/i\u003e\u003c/b\u003e\necho Html::b(Html::i('hello'));\n\n// \u003cb\u003e\u0026lt;i\u0026gt;hello\u0026lt;/i\u0026gt;\u003c/b\u003e\necho Html::b(Html::i('hello'))-\u003eencode(true);\n```\n\nIn order to mark a string as \"do not encode\" you can use `\\Yiisoft\\Html\\NoEncode` class:\n\n```php\n// \u003cb\u003e\u003ci\u003ehello\u003c/i\u003e\u003c/b\u003e\necho Html::b(NoEncode::string('\u003ci\u003ehello\u003c/i\u003e'));\n```\n\n## HTML widgets usage\n\nThere are multiple widgets that do not directly represent any HTML tag, but a set of tags. These help to express\ncomplex HTML in simple PHP.\n\n### `ButtonGroup`\n\nRepresents a group of buttons.\n\n```php\necho new \\Yiisoft\\Html\\Widget\\ButtonGroup()\n   -\u003ebuttons(\n       \\Yiisoft\\Html\\Html::resetButton('Reset Data'),\n       \\Yiisoft\\Html\\Html::resetButton('Send'),\n   )\n   -\u003econtainerAttributes(['class' =\u003e 'actions'])\n   -\u003ebuttonAttributes(['form' =\u003e 'CreatePost']);\n```\n\nResult will be:\n\n```html\n\u003cdiv class=\"actions\"\u003e\n\u003cbutton type=\"reset\" form=\"CreatePost\"\u003eReset Data\u003c/button\u003e\n\u003cbutton type=\"reset\" class=\"primary\" form=\"CreatePost\"\u003eSend\u003c/button\u003e\n\u003c/div\u003e\n```\n\n### `CheckboxList`\n\nRepresents a list of checkboxes.\n\n```php\necho new \\Yiisoft\\Html\\Widget\\CheckboxList\\CheckboxList('count')\n    -\u003eitems([1 =\u003e 'One', 2 =\u003e 'Two', 5 =\u003e 'Five'])\n    -\u003euncheckValue(0)\n    -\u003evalue(2, 5)\n    -\u003econtainerAttributes(['id' =\u003e 'main']);\n```\n\nResult will be:\n\n```html\n\u003cinput type=\"hidden\" name=\"count\" value=\"0\"\u003e\n\u003cdiv id=\"main\"\u003e\n\u003clabel\u003e\u003cinput type=\"checkbox\" name=\"count[]\" value=\"1\"\u003e One\u003c/label\u003e\n\u003clabel\u003e\u003cinput type=\"checkbox\" name=\"count[]\" value=\"2\" checked\u003e Two\u003c/label\u003e\n\u003clabel\u003e\u003cinput type=\"checkbox\" name=\"count[]\" value=\"5\" checked\u003e Five\u003c/label\u003e\n\u003c/div\u003e\n```\n\n### `RadioList`\n\nRepresents a list of radio buttons.\n\n```php\necho new \\Yiisoft\\Html\\Widget\\RadioList\\RadioList('count')\n    -\u003eitems([1 =\u003e 'One', 2 =\u003e 'Two', 5 =\u003e 'Five'])\n    -\u003euncheckValue(0)\n    -\u003evalue(2)\n    -\u003econtainerAttributes(['id' =\u003e 'main']);\n```\n\nResult will be:\n\n```html\n\u003cinput type=\"hidden\" name=\"test\" value=\"0\"\u003e\n\u003cdiv id=\"main\"\u003e\n\u003clabel\u003e\u003cinput type=\"radio\" name=\"test\" value=\"1\"\u003e One\u003c/label\u003e\n\u003clabel\u003e\u003cinput type=\"radio\" name=\"test\" value=\"2\" checked\u003e Two\u003c/label\u003e\n\u003clabel\u003e\u003cinput type=\"radio\" name=\"test\" value=\"5\"\u003e Five\u003c/label\u003e\n\u003c/div\u003e\n```\n\n## `Html` helper usage\n\n`Html` helper methods are static so usage is:\n\n```php\necho \\Yiisoft\\Html\\Html::a('Yii Framework', 'https://www.yiiframework.com/');\n```\n\nOverall the helper has the following method groups.\n\n### Creating tag objects\n\n#### Custom tags\n\n- tag\n- normalTag\n- voidTag\n\n#### Base tags\n\n- b\n- div\n- em\n- i\n- hr\n- meta\n- p\n- br\n- script\n- noscript\n- span\n- strong\n- small\n- style\n- title\n\n#### Media tags\n\n- img\n- picture\n- audio\n- video\n- track\n- source\n\n#### Heading tags\n\n- h1\n- h2\n- h3\n- h4\n- h5\n- h6\n\n#### Section tags\n\n- html\n- body\n- article\n- section\n- nav\n- aside\n- hgroup\n- header\n- footer\n- address\n\n#### List tags\n\n- ul\n- ol\n- li\n\n#### Hyperlink tags\n\n- a\n- mailto\n\n#### Link tags\n\n- link\n- cssFile\n- javaScriptFile\n\n#### Form tags\n\n- button\n- buttonInput\n- checkbox\n- color\n- datalist\n- fieldset\n- file\n- fileInput\n- form\n- hiddenInput\n- input\n- label\n- legend\n- optgroup\n- option\n- passwordInput\n- radio\n- range\n- resetButton\n- resetInput\n- select\n- submitButton\n- submitInput\n- textarea\n- textInput\n\n#### Table tags\n\n- table\n- caption\n- colgroup\n- col\n- thead\n- tbody\n- tfoot\n- tr\n- th\n- td\n\n### Generating tag parts\n\n- openTag\n- closeTag\n- renderTagAttributes\n\n### Creating HTML widget objects\n\n- radioList\n- checkboxList\n\n### Working with tag attributes\n\n- generateId\n- getArrayableName\n- getNonArrayableName\n- normalizeRegexpPattern\n\n### Encode and escape special characters\n\n- encode\n- encodeAttribute\n- encodeUnquotedAttribute\n- escapeJavaScriptStringValue\n\n### Working with CSS styles and classes\n\n- addCssStyle\n- removeCssStyle\n- addCssClass\n- removeCssClass\n- cssStyleFromArray\n- cssStyleToArray\n\n## Documentation\n\n- [Internals](docs/internals.md)\n\nIf you need help or have a question, the [Yii Forum](https://forum.yiiframework.com/c/yii-3-0/63) is a good place for\nthat. You may also check out other [Yii Community Resources](https://www.yiiframework.com/community).\n\n## License\n\nThe Yii HTML is free software. It is released under the terms of the BSD License.\nPlease see [`LICENSE`](./LICENSE.md) for more information.\n\nMaintained by [Yii Software](https://www.yiiframework.com/).\n\n## Support the project\n\n[![Open Collective](https://img.shields.io/badge/Open%20Collective-sponsor-7eadf1?logo=open%20collective\u0026logoColor=7eadf1\u0026labelColor=555555)](https://opencollective.com/yiisoft)\n\n## Follow updates\n\n[![Official website](https://img.shields.io/badge/Powered_by-Yii_Framework-green.svg?style=flat)](https://www.yiiframework.com/)\n[![Twitter](https://img.shields.io/badge/twitter-follow-1DA1F2?logo=twitter\u0026logoColor=1DA1F2\u0026labelColor=555555?style=flat)](https://twitter.com/yiiframework)\n[![Telegram](https://img.shields.io/badge/telegram-join-1DA1F2?style=flat\u0026logo=telegram)](https://t.me/yii3en)\n[![Facebook](https://img.shields.io/badge/facebook-join-1DA1F2?style=flat\u0026logo=facebook\u0026logoColor=ffffff)](https://www.facebook.com/groups/yiitalk)\n[![Slack](https://img.shields.io/badge/slack-join-1DA1F2?style=flat\u0026logo=slack)](https://yiiframework.com/go/slack)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyiisoft%2Fhtml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyiisoft%2Fhtml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyiisoft%2Fhtml/lists"}