@@ -634,7 +634,8 @@ protected function _prepareDataForUpdate(array $rowData): array
634
634
635
635
$ value = $ rowData [$ attributeAlias ];
636
636
637
- if ($ rowData [$ attributeAlias ] === null || !strlen ($ rowData [$ attributeAlias ])) {
637
+ if ($ rowData [$ attributeAlias ] === null
638
+ || (is_string ($ rowData [$ attributeAlias ]) && !strlen ($ rowData [$ attributeAlias ]))) {
638
639
if ($ attributeParams ['is_required ' ]) {
639
640
continue ;
640
641
}
@@ -689,12 +690,12 @@ protected function _prepareDataForUpdate(array $rowData): array
689
690
/**
690
691
* Process row data, based on attirbute type
691
692
*
692
- * @param string $rowAttributeData
693
+ * @param string|array $rowAttributeData
693
694
* @param array $attributeParams
694
695
* @return \DateTime|int|string
695
696
* @throws \Exception
696
697
*/
697
- protected function getValueByAttributeType (string $ rowAttributeData , array $ attributeParams )
698
+ protected function getValueByAttributeType ($ rowAttributeData , array $ attributeParams )
698
699
{
699
700
$ multiSeparator = $ this ->getMultipleValueSeparator ();
700
701
$ value = $ rowAttributeData ;
@@ -709,8 +710,14 @@ protected function getValueByAttributeType(string $rowAttributeData, array $attr
709
710
break ;
710
711
case 'multiselect ' :
711
712
$ 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
+ }
714
721
}
715
722
$ value = implode (', ' , $ ids );
716
723
break ;
@@ -880,7 +887,9 @@ protected function _validateRowForUpdate(array $rowData, $rowNumber)
880
887
881
888
if (in_array ($ attributeCode , $ this ->_ignoredAttributes )) {
882
889
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 ])))) {
884
893
$ this ->isAttributeValid (
885
894
$ attributeCode ,
886
895
$ attributeParams ,
0 commit comments