Added new makeFormWidget() method to WidgetMaker for rendering form widgets individually
This commit is contained in:
parent
ad60afebc4
commit
fc04bd1b4c
|
|
@ -1,3 +1,6 @@
|
|||
* **Build 28x** (2015-08-xx)
|
||||
- Added new `makeFormWidget()` method to `WidgetMaker` trait for rendering form widgets individually. This method is now available to backend controllers, controller behaviors and widgets themselves. Check to make sure your classes do not define a conflicting method of this name.
|
||||
|
||||
* **Build 287** (2015-08-03)
|
||||
- Introduced new **MarkdownEditor** form widget (see Backend > Forms docs).
|
||||
|
||||
|
|
|
|||
|
|
@ -104,12 +104,12 @@ class Repeater extends FormWidgetBase
|
|||
if (!is_array($itemIndexes)) return;
|
||||
|
||||
foreach ($itemIndexes as $itemIndex) {
|
||||
$this->makeFormWidget($itemIndex);
|
||||
$this->makeItemFormWidget($itemIndex);
|
||||
$this->indexCount = max((int) $itemIndex, $this->indexCount);
|
||||
}
|
||||
}
|
||||
|
||||
protected function makeFormWidget($index = 0)
|
||||
protected function makeItemFormWidget($index = 0)
|
||||
{
|
||||
$loadValue = $this->getLoadValue();
|
||||
if (!is_array($loadValue)) $loadValue = [];
|
||||
|
|
@ -131,7 +131,7 @@ class Repeater extends FormWidgetBase
|
|||
$this->indexCount++;
|
||||
|
||||
$this->prepareVars();
|
||||
$this->vars['widget'] = $this->makeFormWidget($this->indexCount);
|
||||
$this->vars['widget'] = $this->makeItemFormWidget($this->indexCount);
|
||||
$this->vars['indexValue'] = $this->indexCount;
|
||||
|
||||
$itemContainer = '@#'.$this->getId('items');
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<?php namespace Backend\Traits;
|
||||
|
||||
use Lang;
|
||||
use Backend\Classes\FormField;
|
||||
use Backend\Classes\WidgetManager;
|
||||
use SystemException;
|
||||
|
||||
|
|
@ -19,10 +20,10 @@ trait WidgetMaker
|
|||
/**
|
||||
* Makes a widget object with the supplied configuration file.
|
||||
* @param string $class Widget class name
|
||||
* @param array $configuration An array of config.
|
||||
* @param array $widgetConfig An array of config.
|
||||
* @return WidgetBase The widget object
|
||||
*/
|
||||
public function makeWidget($class, $configuration = [])
|
||||
public function makeWidget($class, $widgetConfig = [])
|
||||
{
|
||||
$controller = property_exists($this, 'controller') && $this->controller
|
||||
? $this->controller
|
||||
|
|
@ -34,6 +35,43 @@ trait WidgetMaker
|
|||
]));
|
||||
}
|
||||
|
||||
return new $class($controller, $configuration);
|
||||
return new $class($controller, $widgetConfig);
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes a form widget object with the supplied form field and widget configuration.
|
||||
* @param string $class Widget class name
|
||||
* @param mixed $fieldConfig A field name, an array of config or a FormField object.
|
||||
* @param array $widgetConfig An array of config.
|
||||
* @return FormWidgetBase The widget object
|
||||
*/
|
||||
public function makeFormWidget($class, $fieldConfig = [], $widgetConfig = [])
|
||||
{
|
||||
$controller = property_exists($this, 'controller') && $this->controller
|
||||
? $this->controller
|
||||
: $this;
|
||||
|
||||
if (!class_exists($class)) {
|
||||
throw new SystemException(Lang::get('backend::lang.widget.not_registered', [
|
||||
'name' => $class
|
||||
]));
|
||||
}
|
||||
|
||||
if (is_string($fieldConfig)) {
|
||||
$fieldConfig = ['name' => $fieldConfig];
|
||||
}
|
||||
|
||||
if (is_array($fieldConfig)) {
|
||||
$formField = new FormField(
|
||||
array_get($fieldConfig, 'name'),
|
||||
array_get($fieldConfig, 'label')
|
||||
);
|
||||
$formField->displayAs('widget', $fieldConfig);
|
||||
}
|
||||
else {
|
||||
$formField = $fieldConfig;
|
||||
}
|
||||
|
||||
return new $class($controller, $formField, $widgetConfig);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -460,7 +460,7 @@ class Form extends WidgetBase
|
|||
continue;
|
||||
}
|
||||
|
||||
$widget = $this->makeFormWidget($field);
|
||||
$widget = $this->makeFormFieldWidget($field);
|
||||
$widget->bindToController();
|
||||
}
|
||||
|
||||
|
|
@ -674,7 +674,7 @@ class Form extends WidgetBase
|
|||
/**
|
||||
* Makes a widget object from a form field object.
|
||||
*/
|
||||
protected function makeFormWidget($field)
|
||||
protected function makeFormFieldWidget($field)
|
||||
{
|
||||
if ($field->type != 'widget') {
|
||||
return null;
|
||||
|
|
@ -700,7 +700,7 @@ class Form extends WidgetBase
|
|||
));
|
||||
}
|
||||
|
||||
$widget = new $widgetClass($this->controller, $field, $widgetConfig);
|
||||
$widget = $this->makeFormWidget($widgetClass, $field, $widgetConfig);
|
||||
|
||||
return $this->formWidgets[$field->fieldName] = $widget;
|
||||
}
|
||||
|
|
@ -820,7 +820,7 @@ class Form extends WidgetBase
|
|||
}
|
||||
|
||||
if ($field->type == 'widget') {
|
||||
$widget = $this->makeFormWidget($field);
|
||||
$widget = $this->makeFormFieldWidget($field);
|
||||
return $widget->showLabels;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<!-- Widget -->
|
||||
<?php
|
||||
$widget = $this->makeFormWidget($field);
|
||||
$widget = $this->makeFormFieldWidget($field);
|
||||
?>
|
||||
<?= $widget->render() ?>
|
||||
Loading…
Reference in New Issue