A registry/factory for input widgets.
Can be used by helpers/view logic to build form widgets and other HTML widgets.
This class handles the mapping between names and concrete classes. It also has a basic name based dependency resolver that allows widgets to depend on each other.
Each widget should expect a StringTemplate instance as their first argument. All other dependencies will be included after.
Widgets can ask for the current view by using the _view widget.
$_templates protected $_widgets protected array__construct( Cake\View\StringTemplate $templates , Cake\View\View $view , string|array $widgets [] )
Constructor
Cake\View\StringTemplate $templates Cake\View\View $view $widgets optional [] _resolveWidget( mixed $widget )
Resolves a widget spec into an instance.
$widget Cake\View\Widget\WidgetInterfacewhen class cannot be loaded or does not implement WidgetInterface.
add( array $widgets )
Adds or replaces existing widget instances/configuration with new ones.
Widget arrays can either be descriptions or instances. For example:
$registry->add([ 'label' => new MyLabelWidget($templates), 'checkbox' => ['Fancy.MyCheckbox', 'label'] ]);
The above shows how to define widgets as instances or as descriptions including dependencies. Classes can be defined with plugin notation, or fully namespaced class names.
$widgets get( string $name )
Get a widget.
Will either fetch an already created widget, or create a new instance if the widget has been defined. If the widget is undefined an instance of the _default widget will be returned. An exception will be thrown if the _default widget is undefined.
$name Cake\View\Widget\WidgetInterfaceload( string $file )
Load a config file containing widgets.
Widget files should define a $config variable containing all the widgets to load. Loaded widgets will be merged with existing widgets.
$file
© 2005–2017 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.4/class-Cake.View.Widget.WidgetRegistry.html