Skip to content

Commit 9db7120

Browse files
author
graschik
committed
Add ui form validation when widget instance creates
1 parent 2c68dd7 commit 9db7120

File tree

3 files changed

+83
-1
lines changed

3 files changed

+83
-1
lines changed

view/adminhtml/layout/adminhtml_widget_instance_edit.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
<?xml version="1.0"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
22
<body>
33
<referenceContainer name="content">
4+
<referenceBlock name="widget_instance_edit">
5+
<arguments>
6+
<argument name="template" xsi:type="string">Grasch_AdminUi::widget/form/container.phtml</argument>
7+
</arguments>
8+
</referenceBlock>
49
<block name="wysiwyg_widget.initialize-ui-components" template="Grasch_AdminUi::widget/initialize-ui-components.phtml"/>
510
</referenceContainer>
611
</body>
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<?php
2+
/** @var $block \Magento\Backend\Block\Widget\Form\Container */
3+
/** @var \Magento\Framework\View\Helper\SecureHtmlRenderer $secureRenderer */
4+
/** @var \Magento\Framework\Escaper $escaper */
5+
?>
6+
<?= /* @noEscape */ $block->getFormInitScripts() ?>
7+
<?php if ($block->getButtonsHtml('header')): ?>
8+
<div class="page-form-actions" <?= /* @noEscape */ $block->getUiId('content-header') ?>>
9+
<?= $block->getButtonsHtml('header') ?>
10+
</div>
11+
<?php endif; ?>
12+
<?php if ($block->getButtonsHtml('toolbar')): ?>
13+
<div class="page-main-actions">
14+
<div class="page-actions">
15+
<div class="page-actions-buttons">
16+
<?= $block->getButtonsHtml('toolbar') ?>
17+
</div>
18+
</div>
19+
</div>
20+
<?php endif; ?>
21+
<?= $block->getFormHtml() ?>
22+
<?php if ($block->hasFooterButtons()): ?>
23+
<div class="content-footer">
24+
<p class="form-buttons"><?= $block->getButtonsHtml('footer') ?></p>
25+
</div>
26+
<?php endif; ?>
27+
<?php $scriptString = <<<script
28+
29+
require([
30+
'jquery',
31+
'uiRegistry',
32+
'mage/backend/form',
33+
'mage/backend/validation',
34+
], function($, registry){
35+
36+
$('#edit_form').form()
37+
.validation({
38+
validationUrl: '{$escaper->escapeUrl($block->getValidationUrl())}',
39+
highlight: function(element) {
40+
var detailsElement = $(element).closest('details');
41+
if (detailsElement.length && detailsElement.is('.details')) {
42+
var summaryElement = detailsElement.find('summary');
43+
if (summaryElement.length && summaryElement.attr('aria-expanded') === "false") {
44+
summaryElement.trigger('click');
45+
}
46+
}
47+
$(element).trigger('highlight.validate');
48+
},
49+
submitHandler: function(form) {
50+
var isValid = this.valid();
51+
52+
if (isValid) {
53+
$('.widget-ui-components').each(function (index, item) {
54+
var path = jQuery(item).data('scope');
55+
if (registry.get(path)) {
56+
registry.get(path).source.set('params.invalid', false);
57+
registry.get(path).source.trigger('data.validate');
58+
if (registry.get(path).source.get('params.invalid')) {
59+
$('#widget_instace_tabs_properties_section_content').trigger('highlight.validate');
60+
isValid = false;
61+
return false;
62+
}
63+
}
64+
});
65+
}
66+
67+
if (isValid) {
68+
form.submit();
69+
}
70+
}
71+
});
72+
73+
});
74+
75+
script;
76+
?>
77+
<?= /* @noEscape */ $secureRenderer->renderTag('script', [], $scriptString, false) ?>
78+
<?= /* @noEscape */ $block->getFormScripts() ?>

view/adminhtml/templates/widget/initialize-ui-components.phtml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,4 @@
2525
});
2626
})
2727
});
28-
2928
</script>

0 commit comments

Comments
 (0)