\Cake\View\WidgetWidgetLocator

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.

Summary

Methods
Properties
Constants
__construct()
load()
add()
get()
clear()
No public properties found
No constants found
_resolveWidget()
$_widgets
$_templates
N/A
No private methods found
No private properties found
N/A

Properties

$_widgets

$_widgets : array

Array of widgets + widget configuration.

Type

array

Methods

__construct()

__construct(\Cake\View\StringTemplate  $templates, \Cake\View\View  $view, string|array  $widgets = array()) 

Constructor

Parameters

\Cake\View\StringTemplate $templates

Templates instance to use.

\Cake\View\View $view

The view instance to set as a widget.

string|array $widgets

See add() method for more information.

load()

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

add()

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.

Throws

\RuntimeException

When class does not implement WidgetInterface.

get()

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.

Throws

\RuntimeException

when widget is undefined.

\ReflectionException

Returns

\Cake\View\Widget\WidgetInterface

widget interface class.

clear()

clear() : void

Clear the registry and reset the widgets.

_resolveWidget()

_resolveWidget(mixed  $widget) : \Cake\View\Widget\WidgetInterface

Resolves a widget spec into an instance.

Parameters

mixed $widget

The widget to get

Throws

\RuntimeException

when class cannot be loaded or does not implement WidgetInterface.

\ReflectionException

Returns

\Cake\View\Widget\WidgetInterface