diff --git a/Service/Menu/Cloner.php b/Service/Menu/Cloner.php index 269e54b2..1beea3d3 100644 --- a/Service/Menu/Cloner.php +++ b/Service/Menu/Cloner.php @@ -6,6 +6,7 @@ use Exception; use Magento\Framework\App\ResourceConnection; +use Magento\Framework\Serialize\SerializerInterface; use Snowdog\Menu\Api\Data\MenuInterface; use Snowdog\Menu\Api\Data\MenuInterfaceFactory; use Snowdog\Menu\Api\Data\NodeInterfaceFactory; @@ -57,6 +58,11 @@ class Cloner */ private $menuNodes; + /** + * @var SerializerInterface + */ + private $serializer; + public function __construct( ResourceConnection $resource, MenuInterfaceFactory $menuFactory, @@ -65,7 +71,8 @@ public function __construct( NodeRepositoryInterface $nodeRepository, MenuIdentifierProcessor $menuIdentifierProcessor, NodeTypeProvider $nodeTypeProvider, - MenuNodes $menuNodes + MenuNodes $menuNodes, + SerializerInterface $serializer ) { $this->resource = $resource; $this->menuFactory = $menuFactory; @@ -75,6 +82,7 @@ public function __construct( $this->menuIdentifierProcessor = $menuIdentifierProcessor; $this->nodeTypeProvider = $nodeTypeProvider; $this->menuNodes = $menuNodes; + $this->serializer = $serializer; } /** @@ -103,8 +111,13 @@ public function clone(MenuInterface $menu): MenuInterface foreach ($this->menuNodes->getList($menu) as $node) { $nodeClone = $this->nodeFactory->create(); + $data = $node->getData(); + + if (isset($data['customer_groups'])) { + $data['customer_groups'] = $this->serializer->serialize((array) $data['customer_groups']); + } - $nodeClone->setData($node->getData()); + $nodeClone->setData($data); $nodeClone->setId(null); $nodeClone->setMenuId($menuCloneId);