The best way to install Venne/Widgets is using Composer:
composer require venne/widgets:@dev
Use tag venne.widget
:
services:
myControlFactory:
class: App\MyControlFactory
tags: [venne.widget: 'myWidget']
class ExamplePresenter extends Nette\Application\UI\Presenter
{
use Venne\Widgets\WidgetsControlTrait;
}
Template:
...
{control myWidget}
...
Register some widgets
$widgetManager = new Venne\Widgets\WidgetManager($systemContainer);
$widgetManager->addWidget('widget1', function() {
return new MyComponent;
});
$widgetManager->addWidget('widget2', new MyFormFactory);
$widgetManager->addWidget('widget3', 'app.myFormFactory'); // service in system container
Create instance and use it
if ($widgetManager->hasWidget('widget1')) {
$widget = $widgetManager->getWidget('widget1');
$widget->render();
}