From b380502570b92449326ab6ed50e6ce0359287240 Mon Sep 17 00:00:00 2001 From: Norbert Nagy Date: Thu, 6 Oct 2016 11:14:50 +0200 Subject: [PATCH 1/2] Fix saving of empty multi select input When you save an empty multi select input originally it sent an empty array, which was filtered out by the magento2-base/lib/web/mage/utils/objects.js::flatten() method and it was not sent to the backend for save. This fix changes the empty array to an empty string, which will be passed to the backend and it saves it as empty value properly --- .../view/base/web/js/form/element/multiselect.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/app/code/Magento/Ui/view/base/web/js/form/element/multiselect.js b/app/code/Magento/Ui/view/base/web/js/form/element/multiselect.js index 0a2d08b29f154..e8c8b7f852e0d 100644 --- a/app/code/Magento/Ui/view/base/web/js/form/element/multiselect.js +++ b/app/code/Magento/Ui/view/base/web/js/form/element/multiselect.js @@ -31,8 +31,8 @@ define([ * @inheritdoc */ normalizeData: function (value) { - if (utils.isEmpty(value)) { - value = []; + if (utils.isEmpty(value) || this.value().length == 0) { + value = ''; } return _.isString(value) ? value.split(',') : value; @@ -83,6 +83,17 @@ define([ this.error(false); return this; + }, + + /** + * @inheritdoc + */ + onUpdate: function () { + if (this.value().length == 0) { + this.value(''); + } + + this._super(); } }); }); From 9e4eb01382d75391c81b0fcb3cbea3b2ba275f26 Mon Sep 17 00:00:00 2001 From: Norbert Nagy Date: Fri, 7 Oct 2016 12:37:19 +0200 Subject: [PATCH 2/2] Fix issue with undefined values --- .../Magento/Ui/view/base/web/js/form/element/multiselect.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/Ui/view/base/web/js/form/element/multiselect.js b/app/code/Magento/Ui/view/base/web/js/form/element/multiselect.js index e8c8b7f852e0d..b0d764b8cac93 100644 --- a/app/code/Magento/Ui/view/base/web/js/form/element/multiselect.js +++ b/app/code/Magento/Ui/view/base/web/js/form/element/multiselect.js @@ -31,7 +31,7 @@ define([ * @inheritdoc */ normalizeData: function (value) { - if (utils.isEmpty(value) || this.value().length == 0) { + if (utils.isEmpty(value) || (typeof value != 'undefined' && value.length == 0)) { value = ''; }