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.

Namespace: Cake\View\Widget

Properties 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)

Resolves a widget spec into an instance.

Parameters

mixed $config

The widget config.

Returns

\Cake\View\Widget\WidgetInterface

Widget instance.

Throws

ReflectionException

add() public

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.

Parameters

array $widgets

Array of widgets to use.

Throws

RuntimeException
When class does not implement WidgetInterface.

clear() public

clear()

Clear the registry and reset the widgets.

get() public

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.

Parameters

string $name

The widget name to get.

Returns

\Cake\View\Widget\WidgetInterface

WidgetInterface instance.

Throws

RuntimeException
when widget is undefined.

load() public

load(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.

Parameters

string $file

The file to load

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.1/class-Cake.View.Widget.WidgetLocator.html