@@ -634,7 +634,8 @@ protected function _prepareDataForUpdate(array $rowData): array
634634
635635 $ value = $ rowData [$ attributeAlias ];
636636
637- if ($ rowData [$ attributeAlias ] === null || !strlen ($ rowData [$ attributeAlias ])) {
637+ if ($ rowData [$ attributeAlias ] === null
638+ || (is_string ($ rowData [$ attributeAlias ]) && !strlen ($ rowData [$ attributeAlias ]))) {
638639 if ($ attributeParams ['is_required ' ]) {
639640 continue ;
640641 }
@@ -689,12 +690,12 @@ protected function _prepareDataForUpdate(array $rowData): array
689690 /**
690691 * Process row data, based on attirbute type
691692 *
692- * @param string $rowAttributeData
693+ * @param string|array $rowAttributeData
693694 * @param array $attributeParams
694695 * @return \DateTime|int|string
695696 * @throws \Exception
696697 */
697- protected function getValueByAttributeType (string $ rowAttributeData , array $ attributeParams )
698+ protected function getValueByAttributeType ($ rowAttributeData , array $ attributeParams )
698699 {
699700 $ multiSeparator = $ this ->getMultipleValueSeparator ();
700701 $ value = $ rowAttributeData ;
@@ -709,8 +710,14 @@ protected function getValueByAttributeType(string $rowAttributeData, array $attr
709710 break ;
710711 case 'multiselect ' :
711712 $ ids = [];
712- foreach (explode ($ multiSeparator , mb_strtolower ($ rowAttributeData )) as $ subValue ) {
713- $ ids [] = $ this ->getSelectAttrIdByValue ($ attributeParams , $ subValue );
713+ if (is_array ($ rowAttributeData )) {
714+ foreach ($ rowAttributeData as $ subValue ) {
715+ $ ids [] = $ this ->getSelectAttrIdByValue ($ attributeParams , mb_strtolower ($ subValue ));
716+ }
717+ } elseif (is_string ($ rowAttributeData )) {
718+ foreach (explode ($ multiSeparator , mb_strtolower ($ rowAttributeData )) as $ subValue ) {
719+ $ ids [] = $ this ->getSelectAttrIdByValue ($ attributeParams , $ subValue );
720+ }
714721 }
715722 $ value = implode (', ' , $ ids );
716723 break ;
@@ -880,7 +887,9 @@ protected function _validateRowForUpdate(array $rowData, $rowNumber)
880887
881888 if (in_array ($ attributeCode , $ this ->_ignoredAttributes )) {
882889 continue ;
883- } elseif (isset ($ rowData [$ attributeCode ]) && strlen ($ rowData [$ attributeCode ])) {
890+ } elseif (isset ($ rowData [$ attributeCode ])
891+ && ((is_string ($ rowData [$ attributeCode ]) && strlen ($ rowData [$ attributeCode ]))
892+ || (is_array ($ rowData [$ attributeCode ]) && count ($ rowData [$ attributeCode ])))) {
884893 $ this ->isAttributeValid (
885894 $ attributeCode ,
886895 $ attributeParams ,
0 commit comments