14 class Options extends \Magento\Backend\Block\Widget\Form\Generic
43 \
Magento\Framework\Data\FormFactory $formFactory,
44 \
Magento\Framework\Option\ArrayPool $sourceModelPool,
45 \
Magento\Widget\Model\Widget $widget,
48 $this->_sourceModelPool = $sourceModelPool;
49 $this->_widget = $widget;
63 $this->
getForm()->setUseContainer(
false);
75 if ($this->_form instanceof \
Magento\Framework\Data\
Form) {
79 $form = $this->_formFactory->create();
91 if ($this->
_getData(
'main_fieldset') instanceof \
Magento\Framework\Data\
Form\Element\Fieldset) {
92 return $this->
_getData(
'main_fieldset');
94 $mainFieldsetHtmlId =
'options_fieldset' . md5($this->getWidgetType());
95 $this->setMainFieldsetHtmlId($mainFieldsetHtmlId);
96 $fieldset = $this->
getForm()->addFieldset(
98 [
'legend' =>
__(
'Widget Options'),
'class' =>
'fieldset-wide fieldset-widget-options']
100 $this->
setData(
'main_fieldset', $fieldset);
118 if (!$this->getWidgetType()) {
119 throw new \Magento\Framework\Exception\LocalizedException(
__(
'Please specify a Widget Type.'));
121 $config = $this->_widget->getConfigAsObject($this->getWidgetType());
122 if (!
$config->getParameters()) {
125 foreach (
$config->getParameters() as $parameter) {
147 $fieldName = $parameter->getKey();
149 'name' => $form->addSuffixToName($fieldName,
'parameters'),
150 'label' =>
__($parameter->getLabel()),
151 'required' => $parameter->getRequired(),
152 'class' =>
'widget-option',
153 'note' =>
__($parameter->getDescription()),
156 if (
$values = $this->getWidgetValues()) {
159 $data[
'value'] = $parameter->getValue();
163 if ($fieldName ==
'unique_id' &&
$data[
'value'] ==
'') {
164 $data[
'value'] = hash(
'sha256', microtime(1));
167 if (is_array(
$data[
'value'])) {
172 $data[
'value'] = html_entity_decode(
$data[
'value']);
176 if (
$values = $parameter->getValues()) {
178 $data[
'values'] = [];
183 }
elseif ($sourceModel = $parameter->getSourceModel()) {
184 $data[
'values'] = $this->_sourceModelPool->get($sourceModel)->toOptionArray();
188 $fieldRenderer =
null;
189 $fieldType = $parameter->getType();
191 if (!$parameter->getVisible()) {
192 $fieldType =
'hidden';
195 $fieldRenderer = $this->
getLayout()->createBlock($fieldType);
200 $field = $fieldset->addField($this->getMainFieldsetHtmlId() .
'_' . $fieldName, $fieldType,
$data);
201 if ($fieldRenderer) {
202 $field->setRenderer($fieldRenderer);
206 if (
$helper = $parameter->getHelperBlock()) {
207 $helperBlock = $this->
getLayout()->createBlock(
212 if ($helperBlock instanceof \
Magento\Framework\DataObject) {
213 $helperBlock->setConfig(
217 )->prepareElementHtml(
225 $dependenceBlock->addFieldMap($field->getId(), $fieldName);
226 if ($parameter->getDepends()) {
227 foreach ($parameter->getDepends() as $from =>
$row) {
229 $dependenceBlock->addFieldDependence($fieldName, $from,
$values);
244 return preg_match(
'/[A-Z]/', $fieldType) > 0;
elseif(isset( $params[ 'redirect_parent']))
setData($key, $value=null)