https://github.com/yiisoft/widget
Widgets are reusable building blocks used to create complex and configurable user interface elements in an object-oriented fashion
https://github.com/yiisoft/widget
hacktoberfest view widget yii3
Last synced: 5 months ago
JSON representation
Widgets are reusable building blocks used to create complex and configurable user interface elements in an object-oriented fashion
- Host: GitHub
- URL: https://github.com/yiisoft/widget
- Owner: yiisoft
- License: bsd-3-clause
- Created: 2020-01-10T11:26:12.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-07-02T14:36:30.000Z (11 months ago)
- Last Synced: 2024-10-29T14:35:39.981Z (7 months ago)
- Topics: hacktoberfest, view, widget, yii3
- Language: PHP
- Homepage: https://www.yiiframework.com/
- Size: 174 KB
- Stars: 25
- Watchers: 19
- Forks: 7
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Code of conduct: .github/CODE_OF_CONDUCT.md
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
Yii Widget
[](https://packagist.org/packages/yiisoft/widget)
[](https://packagist.org/packages/yiisoft/widget)
[](https://github.com/yiisoft/widget/actions?query=workflow%3Abuild)
[](https://scrutinizer-ci.com/g/yiisoft/widget/?branch=master)
[](https://scrutinizer-ci.com/g/yiisoft/widget/?branch=master)
[](https://dashboard.stryker-mutator.io/reports/github.com/yiisoft/widget/master)
[](https://github.com/yiisoft/widget/actions?query=workflow%3A%22static+analysis%22)
[](https://shepherd.dev/github/yiisoft/widget)Widgets are reusable building blocks used to create complex and configurable
user interface elements in an object-oriented fashion.This package provides an abstract class and a factory for creating widgets,
ready-made widgets are provided in the [yiisoft/yii-widgets](https://github.com/yiisoft/yii-widgets) package.## Requirements
- PHP 8.0 or higher.
## Installation
The package could be installed with [Composer](https://getcomposer.org):
```shell
composer require yiisoft/widget
```## General usage
In order to implement your own widget, you need to create a class that extends the abstract class
`Yiisoft\Widget\Widget`. In most cases it is enough to implement `render()` method.```php
final class MyWidget extends \Yiisoft\Widget\Widget
{
public function render(): string
{
return 'My first widget.'.
}
}
```To get the string "My first widget." in the view, call the `widget()` method. Inside which the
`Yiisoft\Widget\WidgetFactory` will create an instance of the `MyWidget`, and when converting the object
to a string, the declared `render()` method will be called.```php
= MyWidget::widget() ?>
```The `Yiisoft\Widget\WidgetFactory` factory uses a [Factory](https://github.com/yiisoft/factory)
instance to create widget objects, so you can require dependencies by listing them in your widget's constructor
and set default values when initializing the factory. To initialize the widget factory call
`WidgetFactory::initialize()` once before using widgets:```php
/**
* @var \Psr\Container\ContainerInterface $container
*/
$widgetDefaults = [
MyWidget::class => [
'withNumber()' => [42],
],
];\Yiisoft\Widget\WidgetFactory::initialize($container, $widgetDefaults);
```It is a good idea to do that for the whole application. See Yii example in the configuration file of this package
[`config/bootstrap.php`](https://github.com/yiisoft/widget/blob/master/config/bootstrap.php).## Documentation
- Guide: [English](docs/guide/en/README.md), [Português - Brasil](docs/guide/pt-BR/README.md)
- [Internals](docs/internals.md)If you need help or have a question, the [Yii Forum](https://forum.yiiframework.com/c/yii-3-0/63) is a good place for that.
You may also check out other [Yii Community Resources](https://www.yiiframework.com/community).## License
The Yii Widget is free software. It is released under the terms of the BSD License.
Please see [`LICENSE`](./LICENSE.md) for more information.Maintained by [Yii Software](https://www.yiiframework.com/).
## Support the project
[](https://opencollective.com/yiisoft)
## Follow updates
[](https://www.yiiframework.com/)
[](https://twitter.com/yiiframework)
[](https://t.me/yii3en)
[](https://www.facebook.com/groups/yiitalk)
[](https://yiiframework.com/go/slack)