类 WidgetLocator
输入小部件的注册表/工厂。
可以由帮助器/视图逻辑来构建表单小部件和其他 HTML 小部件。
此类处理名称和具体类之间的映射。它还具有基本的基于名称的依赖项解析器,允许小部件相互依赖。
每个小部件都应该将 StringTemplate 实例作为其第一个参数。所有其他依赖项将包含在后面。
小部件可以使用 _view
小部件来请求当前视图。
命名空间: Cake\View\Widget
属性摘要
-
$_templates protected
Cake\View\StringTemplate
要使用的模板。
-
$_view protected
Cake\View\View
视图实例。
-
$_widgets protected
array
小部件和小部件配置的数组。
方法摘要
-
__construct() public
构造函数
-
_resolveWidget() protected
将小部件规范解析为实例。
-
add() public
添加或用新的替换现有的小部件实例/配置。
-
clear() public
清除注册表并重置小部件。
-
get() public
获取小部件。
-
load() public
加载包含小部件的配置文件。
方法详细
__construct() ¶ public
__construct(Cake\View\StringTemplate $templates, Cake\View\View $view, array $widgets = [])
构造函数
参数
-
Cake\View\StringTemplate
$templates 要使用的模板实例。
-
Cake\View\View
$view 要设置为小部件的视图实例。
-
array
$widgets optional 有关更多信息,请参阅 add() 方法。
_resolveWidget() ¶ protected
_resolveWidget(array|string $config): Cake\View\Widget\WidgetInterface
将小部件规范解析为实例。
参数
-
array|string
$config 小部件配置。
返回值
Cake\View\Widget\WidgetInterface
抛出
InvalidArgumentException
add() ¶ public
add(array $widgets): void
添加或用新的替换现有的小部件实例/配置。
小部件数组可以是描述或实例。例如
$registry->add([
'label' => new MyLabelWidget($templates),
'checkbox' => ['Fancy.MyCheckbox', 'label']
]);
上面显示了如何将小部件定义为实例或描述,包括依赖项。类可以用插件符号定义,也可以用完全限定的命名空间类名定义。
参数
-
array
$widgets 要使用的小部件数组。
返回值
void
get() ¶ public
get(string $name): Cake\View\Widget\WidgetInterface
获取小部件。
将获取已创建的小部件,或者如果小部件已定义则创建新实例。如果小部件未定义,将返回 _default
小部件的实例。如果 _default
小部件未定义,将抛出异常。
参数
-
string
$name 要获取的小部件名称。
返回值
Cake\View\Widget\WidgetInterface
抛出
InvalidArgumentException
当小部件未定义时。
load() ¶ public
load(string $file): void
加载包含小部件的配置文件。
小部件文件应该定义一个 $config
变量,其中包含要加载的所有小部件。加载的小部件将与现有的小部件合并。
参数
-
string
$file 要加载的文件
返回值
void