On this page
Class WidgetLocator
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.
Property Summary
-
$_templates protected
Cake\View\StringTemplate
Templates to use.
-
$_view protected
Cake\View\View
View instance.
-
$_widgets protected
array
Array of widgets + widget configuration.
Method Summary
__construct() public
Constructor
_resolveWidget() protected
Resolves a widget spec into an instance.
add() public
Adds or replaces existing widget instances/configuration with new ones.
clear() public
Clear the registry and reset the widgets.
get() public
Get a widget.
load() public
Load a config file containing widgets.
Method Detail
__construct() public
__construct(Cake\View\StringTemplate $templates, Cake\View\View $view, array $widgets = [])
Constructor
Parameters
Cake\View\StringTemplate
$templates-
Templates instance to use.
Cake\View\View
$view-
The view instance to set as a widget.
array
$widgets optional-
See add() method for more information.
_resolveWidget() protected
_resolveWidget(mixed $config): Cake\View\Widget\WidgetInterface
Resolves a widget spec into an instance.
Parameters
mixed
$config-
The widget config.
Returns
Cake\View\Widget\WidgetInterface
Throws
ReflectionException
add() public
add(array $widgets): void
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.
Parameters
array
$widgets-
Array of widgets to use.
Returns
void
Throws
RuntimeException
When class does not implement WidgetInterface.
clear() public
clear(): void
Clear the registry and reset the widgets.
Returns
void
get() public
get(string $name): Cake\View\Widget\WidgetInterface
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.
Parameters
string
$name-
The widget name to get.
Returns
Cake\View\Widget\WidgetInterface
Throws
RuntimeException
when widget is undefined.
load() public
load(string $file): void
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.
Parameters
string
$file-
The file to load
Returns
void
Property Detail
$_templates protected
Templates to use.
Type
Cake\View\StringTemplate
$_view protected
View instance.
Type
Cake\View\View
$_widgets protected
Array of widgets + widget configuration.
Type
array
© 2005–present 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/4.4/class-Cake.View.Widget.WidgetLocator.html